2017-12-17 16 views
0

標準プロファイラーの出力は、通常、低レベル関数が費やした時間に関する詳細で詰まっています。大規模で複雑なプロジェクトでは、まず自分のコードのどの部分が他の部分よりも長くかかるのかという一般的な考えを得たいと思います。Pythonの固定コール深度へのプロファイリング

具体的には、特定のコール深度に限定して結果を報告するようにプロファイラに指示する方法があるのだろうかと思います。たとえば、depth = 0を設定すると、Pythonスクリプト全体の合計時間だけが表示されます。 depth = 1は、スクリプト上の個々の行の時間を表示できます。 depth = 2は、スクリプト内の関数によって呼び出された関数の時間を示すことができます。

このようなツールはありますか?

答えて

1

お探しの商品と異なる場合がありますが、個人的にはpyprof2calltreeが非常に便利です。組み込みのcProfileの出力をKCacheGrindのようなツールでundersttodの形式に変換します。 (別のウィジェットセットを使用する実装もあります(例:qcachegrind)

KCacheGrindのようなツールは、プロファイリングされたコードの呼び出しツリーを視覚化することができます。特定の呼び出し関数(つまり、トップレベルのメイン関数)の呼び出し先が、添付のスクリーンショットを確認してください。 profile visualization (画像ソース:link):

pyprof2calltree -k -i todo_profile.cprof 

-iオプションが NPUTファイルが何であるかを指定しますpyprof2calltreeとインストールKCacheGrind

は、プロファイラ出力を可視化することは、単一のコマンドだけの問題です-kスイッチは、インストールされているビジュアライザーツール(KCacheGrindなど)を実行します。

関連する問題