2011-09-15 64 views
1

我有一個運行了很多天的python程序。內存使用量不會增加很多,但是程序變得越來越慢。是否有一個工具或實用程序將列出所有函數調用以及它們需要多長時間才能完成?類似guppy/heapy,但CPU使用率。隨着時間的推移CPU使用率增加

+0

CPROFILE是在標準庫中運行整個腳本。 – geoffspear

回答

2

EDIT2

我剛纔看到您的實際問題在 'How can you profile a Python script?'


當然,使用profile.py邊回答。

import profile 

def myfunction(): 
    bla bla bla 

profile.run('myfunction()') 

也看到profilerstips on performance

編輯: 上面的例子是針對一個功能的。 您可以配置文件和命令行與CPROFILE與運行腳本:

python -m cProfile myscript.py 

你的程序/腳本也像運行總時分析如下:

def myfunction(): 
    for i in range(100): 
     print(i) 

def myotherfunction(): 
    for i in range(200): 
     print(i) 

def main(): 
    """ main program to run over several days """ 
    for _ in range(3): 
     myfunction() 

    myotherfunction() 

if __name__ == '__main__': 
    profile.run('main()') # will execute your program 
          # and show profiling results afterwards 
+0

但是我想在整個應用程序上運行這個過程。無論如何。 – rook

+1

您可以,但由於開銷,它可能會更慢地減慢程序。難道你不能只運行一段時間,檢查瓶頸在哪裏並對它們進行處理? – Remi

0

得到的的PID過程

ps -ef | grep「processname」| awk'{print $ 2}

然後查看程序中的哪些調用需要更多時間。

strace的-c -p 「PID」

你甚至可以

strace的-c script.file

相關問題