4

重複の可能性:
Python スクリプトをプロファイリングするにはどうすればよいですか?

Pythonコードで最も多くの時間を費やしたメソッドを見つけるために使用cProfileしました。「percall」でソートした後の出力は次のとおりです。

len()メソッドがほとんどの時間を費やしていることがわかりました。

53515/533   330 930 0   940 00{len}

ただし、len()call が python オブジェクト__len__()メソッドを呼び出すことはわかっていますが、どの python クラス/オブジェクトが私を最も費やしたかをどのように知ることができますか?

私はpython 2.6.5を使用していて、次を使用してスクリプトを実行しました:

python -m cProfile myscript.py

実際、私のコードは を使用しpython-numpyscipyニュートン法を使用して数値最適化を行います。目的関数の勾配の計算にほとんどの時間を費やしたと思いますが、なぜそれほど多くの時間を費やしたのかを知りたいと思います。

4

1 に答える 1

0

cProfile は、各関数について、サブコールを含むこの関数内で費やされた合計時間と、サブコールを除いてこの関数内で費やされた合計時間を 2 回提供します。ボトルネックを検出するには、通常、これら 2 つのメトリックに従って最大のコストを検討します。

あなたの場合、lenを呼び出す関数をたくさん探して、不必要な呼び出しを避けるために値をどこかに保存できるかどうかを確認します。

于 2012-06-21T13:10:34.593 に答える