Pythonでコードの実行時間を計測する方法を解説
Pythonでプログラムの実行時間を測定したい場合、timeモジュールの関数を利用できます。また、より正確なベンチマークを行いたい場合には、Python公式ドキュメントでも推奨されているtimeitモジュールを使用するのが良いでしょう。
timeモジュールを使った基本的な計測方法
処理の開始前と終了後に時刻を取得し、その差分から経過時間を算出するのが基本的な方法です。
例
import time
t0 = time.clock()
print("Hello")
t1 = time.clock() - t0
print("Time elapsed: ", t1 - t0) # 経過したCPU秒数(浮動小数点数)
出力
Time elapsed: 0.0009403145040156798
なお、time.clock()はPython 3.3で非推奨となり、Python 3.8で削除されました。現在のPython環境では、CPU時間の計測にはtime.process_time()、高精度な実時間(ウォールクロック時間)の計測にはtime.perf_counter()を使用することが推奨されています。
timeitモジュールによる統計的な計測
コードスニペットの実行時間をより厳密に分析したい場合は、timeitモジュールが便利です。このモジュールは対象のコードを複数回実行し、最短の実行にかかった時間を報告してくれます。これにより、OSのスケジューリングや他のプロセスによる一時的な遅延の影響を最小限に抑えられます。
例
def f(x):
return x * x
import timeit
timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=100000)
出力
[2.0640320777893066, 2.0876040458679199, 2.0520210266113281]
timeit.repeat()はデフォルトで3回の繰り返し実行を行い、それぞれの結果をリストとして返します。返されたリストの中で最も小さい値が、そのコードの本来の実行時間に最も近いと考えられます。number引数で1回あたりの実行回数を指定できるため、短い処理ほど大きな値を設定することで、より安定した計測結果が得られます。
-
PythonとMatplotlibで点群の中心座標を取得・可視化する方法
一連のポイント(点群)の中心を求めるには、リスト内のすべての要素を合計し、その合計値をリストの要素数(長さ)で割ります。この計算結果が、対応する各軸における中心座標となります。これはいわゆる「平均値」であり、点群の重心を表します。実装の手順データポイントとして x 座標と y 座標の2つのリストを作成します。plot() メソッドを使って、x および y のデータポイントをプロットします。x と y の各リストから、sum() と len() を組み合わせて中心座標のタプルを算出します。算出した中心点をグラフ上にプロットします。annotate() メソッドを使い、中心点に「center」とい
-
Python Tkinterでルートウィンドウを非表示・破棄する2つの方法
Tkinterアプリケーションのテスト中に、デフォルトのウィンドウやフレームを一時的に隠したい、あるいは完全に閉じたいという場面に遭遇することがあります。Tkinterでは、withdraw()メソッドによる「非表示」と、destroy()メソッドによる「破棄」の2つのアプローチが用意されています。mainloop()とウィンドウのライフサイクルmainloop()は、外部イベントによってウィンドウが閉じられるまで、Tkinterアプリケーションを実行し続ける役割を担います。このメインループが動作している間、ウィンドウは画面上に表示され続けます。ウィンドウを完全に破棄(終了)したい場合は、de