web-dev-qa-db-ja.com

Python用のビジュアルプロファイラーはありますか?

cProfile を使用していますが、統計データを照会するためだけにpstatsコードを書くのは面倒です。

CPU時間とメモリ割り当ての観点から、コードPython)が実行していることを示す視覚的なツールを探しています。

Java世界からのいくつかの例は visualvm および JProfiler です。

  • このようなものはありますか?
  • IDEこれがありますか?
  • dtrace 助けますか?

Linuxの場合は KCachegrind を知っていますが、KDEをインストールせずにWindows/Macで実行できるものを好みます。

91
Frederik

友人と私は、Webブラウザで実行される SnakeViz と呼ばれるPythonプロファイルビューアを作成しました。既に正常に使用している場合 RunSnakeRun SnakeVizそれほど価値はありませんが、SnakeVizのインストールははるかに簡単です。

編集:SnakeVizはPython 2および3をサポートし、すべての主要システムで動作します。

77
jiffyclub

RunSnakeRun のみを認識しています。

PyDev(Eclipse)の統合プロファイラーについても少し前に話がありましたが、それが日の目を見るかどうかはわかりません。

更新:残念ながら、RunSnakeRunはもはやメンテナンスされておらず、Python 3。

41
nikow

私はgpr​​of2dot.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 がインストールされている必要があります。 便利なシェルスクリプト をお勧めします。

14
maxy

Spyder は、cProfileのかなり素敵なGUIも提供します。

enter image description here

8
jsexauer

Python Tools for Visual Studioには、非常によくできたグラフィカルプロファイラーが含まれています。 http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1

http://pytools.codeplex.com/

4
Jake

この人は here で説明されているグラフィカルなプロファイルを作成しました。たぶん、あなたはあなた自身の仕事の出発点としてそれを使うことができました。

4
PaulMcG

KCacheGrindには、 Mac OS X および Windows を実行するQCacheGrindというバージョンが含まれています。

3
akaihola

Snakevizを試してください。非常に簡単に(pip経由で)インストールでき、ブラウザベースです。

https://jiffyclub.github.io/snakeviz/

3
BangTheBank

Python Call Graph は、 maxy's answer と非常によく似た写真を生成します。また、各関数の合計時間も表示されますが、何らかの理由でグラフの例には反映されていません。

2
Lev Levitsky

ブラウザベースの視覚化ツール profile_eye を作成しました。これは gprof2dot の出力を操作します。

gprof2dotは、多くのプロファイリングツールの出力を理解するのに優れており、グラフ要素の配置にも優れています。最終的なレンダリングは静的なグラフィックであり、多くの場合非常に乱雑です。

d3.js を使用すると、焦点の合っていない要素、ツールチップ、および フィッシュアイディストーション の相対的なフェードにより、その混乱の多くを除去することができます。

比較については、 profile_eyeの視覚化gprof2dotで使用される標準的な例 を参照してください。 Pythonについては、 cProfileの出力例 を参照してください。

1
Ami Tavory

pyflame + flamegraphを検討してください

Pyflame:Python +フレームグラフの追跡プロファイラー

https://github.com/uber/pyflame

Pyflameを使用して、実行中のpythonプロセスに向かってトレースできます。

1
McKelvin

plop を使用しましたが、非常に軽量であることがわかりました。 perfについての簡単な洞察を提供します。

0
auny