2

コマンドラインで、次のことができます。

python -m timeit 'a = 1'

ドキュメントによると:

-nが指定されていない場合、合計時間が少なくとも0.2秒になるまで、10の累乗を連続して試行することにより、適切なループ数が計算されます。

timeitこれはうまく機能しますが、プログラムで使用するときに同じ動作を得るにはどうすればよいですか?呼び出しのnumber引数を省略すると、デフォルトで。になります。timeit.timeit1000000

4

2 に答える 2

4

ドキュメントは、そのような機能が存在することを明らかにしていません、私は存在しないと仮定します。幸い、それを実行するラッパーを定義するのはそれほど難しくありません。

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
于 2012-04-24T16:41:25.430 に答える
1

ラッパーを作成する代わりに、次の方法があります。

import subprocess
import sys

subprocess.call([sys.executable, '-m', 'timeit', stmt])
于 2012-04-24T16:47:34.787 に答える