cProfile、pstats、および Gprof2dot を使用して、かなり長い Python スクリプトのプロファイルを作成しています。
結果は、定義したオブジェクトのメソッドの呼び出しに最も時間が費やされていることを示しています。ただし、私が本当に望んでいるのは、その関数内のどの行番号が時間を食いつぶしているのかを正確に知ることです。
この追加情報を取得する方法はありますか?
(ちなみに、私はOSX Snow LeopardでPython 2.6を使用しています...)
Robert Kern によって書かれた Pythonのライン プロファイラーがあります。
「食べ尽くされた」時間が 40% のような数値であるとします。次に、プログラムを中断するか、ランダムな時間に一時停止すると、40% の確率でプログラムが表示され、コール スタックに正確に表示されます。これを 10 回実行すると、4 つのサンプルで +/- が表示されます。
cProfile
関数内の行番号を追跡しません。関数が定義された行番号のみを追跡します。
cProfile
profile
(純粋な Python である) の動作を複製しようとします。実行中のデータを保存するためにprofile
使用し、個々の Python ステートメントではなく、関数定義の行番号のみを保存します。pstats
pstats
常に食べているものをより細かい粒度で把握する必要がある場合は、大きな関数をいくつかの小さな関数にリファクタリングする必要があります。