Python でのプロファイリング: 関数を呼び出したのは誰ですか? 質問する

Python でのプロファイリング: 関数を呼び出したのは誰ですか? 質問する

Python を使用してプロファイリングしていますcProfile。CPU 時間を大量に消費する関数を見つけました。どの関数がこの重い関数を最も多く呼び出しているかを調べるにはどうすればよいでしょうか?

編集:

回避策として、その重い関数内に、それを呼び出した関数の名前を出力する Python 行を記述できますか?

ベストアンサー1

私はほとんどの場合、cProfileモジュールの出力を次のように表示します。グプロフ2ドット基本的には、出力を graphvis グラフ (.dotファイル) に変換します。たとえば、次のようになります。

gprof2dot 出力の例

これにより、どの関数が最も遅いか、どの関数がその関数を呼び出しているかを非常に簡単に判断できるようになります。

使用方法は次のとおりです。

python -m cProfile -o output.pstats path/to/your/script arg1 arg2
gprof2dot.py -f pstats output.pstats | dot -Tpng -o output.png

おすすめ記事