2015-10-03 55 views
6

我正在運行一個相對複雜的python程序,並且在其中大部分時間都有montecarlo模擬。我想知道它的哪一部分使用了最多的資源,所以我可以使它更快。使用PyCharm(或任何其他IDE)剖析python程序

我正在使用PyCharm專業版,並試圖使用分析器,但結果只是一大堆我從來沒有聽說過的無關函數。

問題:是否有一個好的探查器可以使用,可以提供有意義的結果,以便我可以看到哪個函數或關鍵字在我的蒙特卡羅仿真中使用了最多的資源?

+1

如果不嘗試[*此*](http://stackoverflow.com/a/4299378/23771),請不要過長。它不需要任何費用,而且在告訴你需要花費什麼時間的情況下,它的效率非常高 –

回答

6

根據你的需要和你的python版本,也許你想使用像hotshot。 https://docs.python.org/2/library/hotshot.html

編輯:

對於Python 3.4 CPROFILE可能是一個你所提供的最佳的選擇,但你肯定是要篩選使用grep/SED/AWK的結果是能夠得到相關的結果,特別是如果你在發生大量內部調用的情況下使用導入的庫。 python -m cProfile -s 'calls' <your_program>.py

現在與方法python3問題是如此運行它內部會出現,如果CPROFILE被外部調用原始呼叫的數量,可能是一個更好:

我喜歡呼叫數量排序理念:

import cProfile 

pr = cProfile.Profile() 
pr.enable() 
your_function_call() 
pr.disable() 
# after your program ends 
pr.print_stats(sort="calls") 
+0

我正在使用Python 3.4。 – Nickpick

+0

我編輯了Python3的答案。 – shafeen

3

注:由於在評論中提到的,以下內容適用於PyCharm的付費版本:

如果使用3.X(不知道2.X),我會加入shafee n的答案,並根據原始帖子使其更具PyCharm特定性。這對於Web應用程序或更大的應用程序來說也更好,而對於將輸出打印到標準輸出可能沒問題的簡單命令行程序來說(更好的是能夠通過PyCharm的查看器對不同的方式進行排序)。

確實,按照實例化配置文件以及根據需要啓用和禁用的建議。爲了實現這一點,您需要將其保存到文件中。

  • 在代碼的外部部分中,實例化Profile。
  • 在代碼的內部部分,執行您的分析。
  • 現在,調用pr.dump_stats( 'profile.pstat')

你現在有你想檢查一個配置文件。轉到工具|打開CProfile快照。選擇profile.pstat,現在您可以根據需要查看不同的標題並對其進行排序。

摘要

在PyCharm的CPROFILE觀衆
import cProfile as profile 

# In outer section of code 
pr = profile.Profile() 
pr.disable() 

# In section you want to profile 
pr.enable() 
# code of interest 
pr.disable() 

# Back in outer section of code 
pr.dump_stats('profile.pstat') 

打開文件。

+2

不幸的是,profiler插件是在PyCharm的Professional(非免費)版本中。 – user1735003