cProfile を使用していますが、統計データを照会するためだけにpstatsコードを書くのは面倒です。
CPU時間とメモリ割り当ての観点から、コードPython)が実行していることを示す視覚的なツールを探しています。
Java世界からのいくつかの例は visualvm および JProfiler です。
Linuxの場合は KCachegrind を知っていますが、KDEをインストールせずにWindows/Macで実行できるものを好みます。
友人と私は、Webブラウザで実行される SnakeViz と呼ばれるPythonプロファイルビューアを作成しました。既に正常に使用している場合 RunSnakeRun SnakeVizそれほど価値はありませんが、SnakeVizのインストールははるかに簡単です。
編集:SnakeVizはPython 2および3をサポートし、すべての主要システムで動作します。
RunSnakeRun のみを認識しています。
PyDev(Eclipse)の統合プロファイラーについても少し前に話がありましたが、それが日の目を見るかどうかはわかりません。
更新:残念ながら、RunSnakeRunはもはやメンテナンスされておらず、Python 3。
私はgprof2dot.pyを使用します。結果は like this になります。これらのコマンドを使用します。
python -m cProfile -o profile.dat my_program.py
gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png
graphviz および gprof2dot.py がインストールされている必要があります。 便利なシェルスクリプト をお勧めします。
Spyder は、cProfileのかなり素敵なGUIも提供します。
Python Tools for Visual Studioには、非常によくできたグラフィカルプロファイラーが含まれています。 http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1
この人は here で説明されているグラフィカルなプロファイルを作成しました。たぶん、あなたはあなた自身の仕事の出発点としてそれを使うことができました。
Snakevizを試してください。非常に簡単に(pip経由で)インストールでき、ブラウザベースです。
Python Call Graph は、 maxy's answer と非常によく似た写真を生成します。また、各関数の合計時間も表示されますが、何らかの理由でグラフの例には反映されていません。
ブラウザベースの視覚化ツール profile_eye を作成しました。これは gprof2dot の出力を操作します。
gprof2dotは、多くのプロファイリングツールの出力を理解するのに優れており、グラフ要素の配置にも優れています。最終的なレンダリングは静的なグラフィックであり、多くの場合非常に乱雑です。
d3.js を使用すると、焦点の合っていない要素、ツールチップ、および フィッシュアイディストーション の相対的なフェードにより、その混乱の多くを除去することができます。
比較については、 profile_eyeの視覚化 の gprof2dotで使用される標準的な例 を参照してください。 Pythonについては、 cProfileの出力例 を参照してください。
pyflame + flamegraphを検討してください
Pyflame:Python +フレームグラフの追跡プロファイラー
https://github.com/uber/pyflame
Pyflameを使用して、実行中のpythonプロセスに向かってトレースできます。
plop を使用しましたが、非常に軽量であることがわかりました。 perfについての簡単な洞察を提供します。