2011-09-15 21 views
1

私は何日も実行しているpythonプログラムを持っています。メモリ使用量はそれほど増えませんが、プログラムは遅くなり、遅くなります。すべての関数呼び出しをリストするツールやユーティリティ、および完了までの時間はどれくらいですか? guppy/heapyのようなものですが、CPU使用量です。時間の経過とともにCPU使用率が増加する

+0

cProfile標準ライブラリにあると全体のスクリプトを実行することができます "PID"。 – 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を参照してください。

編集: 上記の例は1つの機能用です。あなたのプログラム/スクリプトの実行時に常にプロファイリングのために、次のようにも見える可能性が

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

しかし、私は数日のうちに私のアプリケーション全体にこれを実行したい。とにかく+1。 – rook

+1

可能ですが、オーバーヘッドのためにおそらくプログラムの速度が低下します。あなたはちょうどそれを実行することはできません、ボトルネックがどこにあるのかを確認し、それらに取り組んでいますか? – Remi

0

はのPIDを取得するあなたはとcProfileとコマンドラインからスクリプトをプロファイリングし、実行することができます プロセス

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

そして、プログラム内のどの呼び出しが時間がかかるかを確認します。

は、straceの-c -p

は、あなたも

straceの-c script.file

関連する問題