私は、Pythonのプロファイルトレースを視覚化するためのツールを開発しています。そのためには、関数が呼び出された行を知ることが役に立ちます。プロファイラ:私の機能を呼び出すものは見つかりますか?
私は、次の簡単なプログラムがあるとします。私はそれにcProfile(python -m cProfile -o a.data a.py
)を実行すると、私は次のようなデータ構造を含むマーシャリングファイルを取得
import time
def my_sleep(x):
time.sleep(x)
def main():
my_sleep(1)
my_sleep(2)
main()
を:
基本的('a.py', 3, 'my_sleep'): (2,
2,
1.4999999999999999e-05,
3.00576,
{('a.py', 6, 'main'): (2,
2,
1.4999999999999999e-05,
3.00576)}),
、このmy_sleep()
は、ライン6でmain()
で2回呼び出され、3秒を少し上回っています。
どの機能からではなく、どの回線が呼び出されているかを調べる方法はありますか?この場合、my_sleep()
は7行目が1秒間、8行目が2秒間呼び出されます。そのよう
あなたの出力は、Pythonドキュメントの出力例とは異なります。あなたはそれに他のフォーマットをしていますか? https://docs.python.org/3.3/library/profile.html#instant-user-s-manual –
はい、マーシャリングされたファイル( '-o a.data')として保存していますPythonインタプリタ( 'marshal.load(open( 'a.data'))')を実行し、それをpprintに渡します。 – Bai
ファイルを保存せずに、コンソールに出力された出力を見てみましたか? –