web-dev-qa-db-ja.com

pythonプログラムをPyCharm(または他のIDE)でプロファイリングする

私は比較的複雑なpythonプログラムを実行していますが、その中にはほとんどの時間を費やすモンテカルロシミュレーションがあります。潜在的にそれをより速くすることができます。

私はPyCharm Professionalエディションを使用しており、プロファイラーを使用しようとしましたが、結果は聞いたことのない無関係な機能の大きなリストにすぎません。

質問:モンテカルロシミュレーションで最も多くのリソースを使用している関数またはキーワードを確認できる、意味のある結果を提供する優れたプロファイラーはありますか?

17
Nickpick

ニーズとpythonバージョンによっては、hotshotのようなものを使用したい場合があります。 https://docs.python.org/2/library/hotshot.html =

編集:

python 3.4 cProfileはおそらくあなたが利用できる最良のオプションの1つですが、特にライブラリを使用する場合、関連する結果を取得できるように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")
12
shafeen