1. ホーム
  2. python

[解決済み] Pythonスクリプトのプロファイリングはどのように行うのですか?

2022-03-18 13:28:37

質問

プロジェクト・オイラー や他のコーディングコンテストでは、最大実行時間が設定されていたり、特定のソリューションがいかに速く実行されるかを自慢することがよくあります。Pythonの場合、時にはアプローチがやや雑になることがあります。 __main__ .

Pythonのプログラムの実行にかかる時間をプロファイリングする良い方法は何ですか?

どのように解決するのですか?

Pythonには、プロファイラである cプロファイル . 総実行時間だけでなく、各関数を個別に計測し、各関数が何回呼ばれたかを教えてくれるので、どこで最適化を行うべきかを簡単に判断することができます。

このように、コードの中から、あるいはインタープリターから呼び出すことができます。

import cProfile
cProfile.run('foo()')

さらに便利なのは、スクリプトを実行するときにcProfileを呼び出すことです。

python -m cProfile myscript.py

さらに簡単にするために、'profile.bat'という小さなバッチファイルを作りました。

python -m cProfile %1

だから、実行するだけでいいんです。

profile euler048.py

そして、こうなる。

1007 function calls in 0.061 CPU seconds

Ordered by: standard name
ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    1    0.000    0.000    0.061    0.061 <string>:1(<module>)
 1000    0.051    0.000    0.051    0.000 euler048.py:2(<lambda>)
    1    0.005    0.005    0.061    0.061 euler048.py:2(<module>)
    1    0.000    0.000    0.061    0.061 {execfile}
    1    0.002    0.002    0.053    0.053 {map}
    1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler objects}
    1    0.000    0.000    0.000    0.000 {range}
    1    0.003    0.003    0.003    0.003 {sum}

EDIT: Updated link to the good video resource from PyCon 2013 entitled. Python プロファイリング
YouTubeでも紹介 .