2011-11-09 15 views
0

私はpython hotshotプロファイラを使用しています。foo()メソッドがN回呼び出されていますが、Nは私が予想していたより大きい数値です。pythonホットショットプロファイリングモジュールからメソッド呼び出しの詳細を取得するには?

foo()がどこから呼び出されているかについてもっと詳しく知る方法はありますか?理想的には、モジュール名と行番号のリスト?

私はコードベースにfoo()の呼び出しがたくさん含まれていますが、プロファイラで設定した特定の条件で実際に実行されているものだけを探したいと思っています。あなたがにそれがより便利かもしれ伐採の代わりに

def foo(): 
    import traceback 
    print 'foo called from', traceback.extract_stack(limit=2)[0][2] 
    # previous foo() code 

:)

+0

試してみてください* [this](http://stackoverflow.com/questions/4295799/how-to-improve-performance-of-this-code/4299378#4299378)*。 –

+0

興味深い!ありがとうマイク。 –

答えて

1

1つのオプションは、あなただけのこれらの行を追加する必要があり、それが呼び出された場所を示すためにfoo()の先頭にいくつかのログを追加することですfoo()が別の場所から何回呼び出されたかのカウントを追跡するグローバル辞書を維持します。

+0

そして、呼び出しスタック全体を望むなら、 'print"コールスタック:%s "%[traceback.extract_stack()]の呼び出し側の呼び出し元[2]' –

関連する問題