コマンドラインで、次のことができます。
python -m timeit 'a = 1'
ドキュメントによると:
-nが指定されていない場合、合計時間が少なくとも0.2秒になるまで、10の累乗を連続して試行することにより、適切なループ数が計算されます。
timeit
これはうまく機能しますが、プログラムで使用するときに同じ動作を得るにはどうすればよいですか?呼び出しのnumber
引数を省略すると、デフォルトで。になります。timeit.timeit
1000000
コマンドラインで、次のことができます。
python -m timeit 'a = 1'
ドキュメントによると:
-nが指定されていない場合、合計時間が少なくとも0.2秒になるまで、10の累乗を連続して試行することにより、適切なループ数が計算されます。
timeit
これはうまく機能しますが、プログラムで使用するときに同じ動作を得るにはどうすればよいですか?呼び出しのnumber
引数を省略すると、デフォルトで。になります。timeit.timeit
1000000
ドキュメントは、そのような機能が存在することを明らかにしていません、私は存在しないと仮定します。幸い、それを実行するラッパーを定義するのはそれほど難しくありません。
import timeit
def auto_timeit(stmt='pass', setup='pass'):
n = 1
t = timeit.timeit(stmt, setup, number=n)
while t < 0.2:
n *= 10
t = timeit.timeit(stmt, setup, number=n)
return t / n # normalise to time-per-run
ラッパーを作成する代わりに、次の方法があります。
import subprocess
import sys
subprocess.call([sys.executable, '-m', 'timeit', stmt])