Pythonプログラムの実行時間を計る簡単な方法はありますか?
明確化:プログラム全体
使用timeit
:
このモジュールは、Pythonコードの小さなビットを計測する簡単な方法を提供します。コマンドラインと呼び出し可能なインターフェイスの両方があります。実行時間を測定するための多くの一般的なトラップを回避します。
文字列にPythonステートメントが必要です。コードにmain関数がある場合は、次のように使用できます。
>>> from timeit import Timer
>>> timer = Timer('main()', 'from yourmodule import main')
>>> print timer.timeit()
2番目の文字列は、最初のステートメントがタイムインされるためのセットアップ、環境を提供します。2番目の部分はタイミングがとられておらず、ステージをそのまま設定することを目的としています。次に、最初の文字列がそのペースで実行されます。正確なタイミングを取得するために、デフォルトで100万回。
物事が遅い場所についてより詳細な情報が必要な場合は、次のいずれかを使用してpython profilers
ください。
プロファイラーは、プログラムの実行時のパフォーマンスを記述し、さまざまな統計を提供するプログラムです。
これを実行する最も簡単な方法はcProfile
、コマンドラインからモジュールを使用することです。
$ python -m cProfile yourprogram.py
Linux / Unix / POSIXと互換性のあるプラットフォームを使用している場合は、を使用してtime
ください。このようにして、スクリプトに干渉したり、(あなたにとって)不必要に詳細なプロファイリングでスクリプトの速度を低下させたりすることはありません。当然、Pythonスクリプトだけでなく、ほとんどすべての用途に使用できます。
組み込みのプロファイラーを使用することをお勧めします。
また、次の単純なデコレータを使用して、関数の実行時間を測定することもできます。
import time
def myprof(func):
def wrapping_fun(*args):
start = time.clock()
result = func(*args)
end = time.clock()
print 'Run time of %s is %4.2fs' % (func.__name__, (end - start))
return result
return wrapping_fun
使用法:
@myprof
def myfun():
# function body
timeitを使用する
>>> import timeit
>>> t = timeit.Timer(stmt="lst = ['c'] * 100")
>>> print t.timeit()
1.10580182076
>>> t = timeit.Timer(stmt="lst = ['c' for x in xrange(100)]")
>>> print t.timeit()
7.66900897026