Python用のビジュアルプロファイラーはありますか?[閉まっている]


99

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

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

Javaの世界からのいくつかの例は、visualvmJProfilerです。

  • このようなものは存在しますか?
  • これを行うIDEはありますか?
  • DTraceの助けを?

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


5
このようなプログラムがまだ存在しない場合、それは素晴らしいオープンソースプロジェクトになります。
カール

@cvondrickこのようなプログラムは存在し、すでに言及されています:KCachegrind。
Devin Jeanpierre 2010

1
@Devin、はい、質問を参照してください。:-)
2010

このテクニックをご存知ですか:stackoverflow.com/questions/375913/…これは視覚的ではありませんが、面倒でもありませんし、効果を上げるのが難しいです。
Mike Dunlavey、2010

4
@KCacheGrind愛好家:KDEをインストールする必要がない理由は、KCacheGrindを使用しない理由です。
マットジョイナー

回答:


86

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

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


41

RunSnakeRunしか知りません

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

更新:残念ながら、RunSnakeRunはもはやメンテナンスされておらず、Python 3をサポートしていないようです。


RunSnakeRunの+1。最高のツール私見。
codeape

4
RunSnakeRunは良いですが、残念ながらそれは、現在(2014年6月のために真)はPython 3で動作しません
ラムRachum

@Ram:情報をありがとう、残念です:
。– nikow 2014年

1
代わりにpyinstrumentを使用しました。別の動物ですが、便利です。
Ram Rachum 2014年

私はRunSnakeRunが好きですが、呼び出し元と呼び出し先がどのように表示されるかはとても嫌いです。RunSnakeRunは、呼び出し回数、現地時間、および各呼び出し元/呼び出し先の累積時間の「合計」値を表示します。したがって、5秒の累積時間を持つ関数のように、100秒の累積時間を持つ呼び出し先を持つことができます。それほど直感的ではなく、pstatsが提供するほど有用ではありません。pstatsは、問題の関数に関連するコンテキスト情報を使用して、呼び出し元/呼び出し先の統計により意味のある数値を提供します。これを簡単に表示できる別のビューアを認識していません。
Vultaire 2016年

14

私はgpr​​of2dot.pyを使用します。結果は次のようになります。私はそれらのコマンドを使用します:

  python -m cProfile -o profile.dat my_program.py
  gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png

graphvizgprof2dot.pyがインストールされている必要があります。あなたは便利なシェルスクリプトが好きかもしれません。


pngではなくsvgを出力する場合(ドット-Tsvg -o profile.svgを使用)、ブラウザーで出力グラフを検索でき、ギザギザのない画像を拡大縮小できます。
razeh



4

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


1
これはとてもクールですが、どうやらC / C ++専用です。ただし、Pythonを使用します。
ロリー

4

KCacheGrindにはQCacheGrindと呼ばれるバージョンが含まれており、Mac OS XWindowsで動作します


さらに、OPはLinux上のKCachegrindの依存関係を誤って解釈するようです。Debian / Ubuntu / Mintで必要なのはapt-get install kcachegrind、KDE関連のライブラリを3つだけインストールすることだけです。
saaj 2016

2
Ubuntu 17.04インストールで@saajは、最大apt install kcachegrind40個のKDEライブラリを含む102個のパッケージをインストールしたいと考えています。
Mark E. Haase

@mehaase新鮮なubuntu:xenial場合は3倍になる可能性がありますが、開発環境用であり、問​​題としてはほとんど見えません。そして、実際にapt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends kcachegrind | grep kde | grep Depends | sort -u | wc -lちょうど13言う
SAAJ



1

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

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

d3.jsを使用すると、フォーカスされていない要素、ツールチップ、および魚眼レンズの歪みを相対的にフェードさせることにより、その乱雑さの多くを取り除くことができます。

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



0

私はプロップを使用し、それが非常に軽量であることがわかりました。パフォーマンスをすばやく洞察できます。


vprofフレームグラフを使用する同様のツールですが、メモリプロファイリングも実行できます。残念ながら、関数に費やされた合計時間ではなく、累積時間のみが表示されます。
goodmami 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.