Python逆引き:処理時間を計測したい

備忘録ヘッダ画像 逆引きソースコード

Pythonで処理時間を計測するには、timeモジュール・timeitモジュールが使用できる。

timeモジュールを使うシンプルな例

特定のコードブロックの実行時間を計測するには、開始時間と終了時間を記録し、その差を計算する。

timeモジュールで処理時間を計測するコード
import time

# 処理開始時刻を記録
start_time = time.time()

# ここに処理を記述 sleepは重たい処理のかわり
time.sleep(5)

# 処理終了時刻を記録
end_time = time.time()

# 処理時間を計算(終了時刻 - 開始時刻)
elapsed_time = end_time - start_time

print("処理時間:", elapsed_time, "秒")
実行結果
処理時間: 5.000749826431274 秒

このコードでは、time.time() 関数を使用して、処理の開始時刻と終了時刻をそれぞれ取得し、その差を計算し、処理に要した時間として出力している。

timeitモジュールを使う例

Pythonで処理時間を計測する他の方法として、timeit モジュールを使用する方法がある。
timeit モジュールは、Pythonのコードの実行時間を計測するためのユーティリティを提供している。
このモジュールを使用すると、複数の実行や平均実行時間の計算など、さまざまな計測方法を簡単に行うことができる。

timeitモジュールを使った場合のコード
import timeit

# 計測したいコードを文字列で定義
code_to_measure = """
# ここに処理を記述 sleepは重たい処理のかわり
time.sleep(5)
"""

# 処理時間を計測
execution_time = timeit.timeit(code_to_measure, number=1)

print("処理時間:", execution_time, "秒")
実行結果
処理時間: 5.000445299956482 秒

このコードでは、timeit.timeit() 関数を使用して、計測したいコードを文字列として定義し、その実行時間を計測している。number パラメータを使用することで、実行回数を指定できる。ここでは1回のみの実行を行っている。

コマンドラインから使うtimeit

timeit コマンドはコマンドラインから直接実行することができる。
Pythonの標準ライブラリで提供される timeit モジュールは、コマンドラインスクリプトとしても使用可能。これにより、Pythonスクリプトを直接コマンドラインから実行して、その実行時間を計測することができる。

timeit コマンドを使用するには、以下のようにコマンドラインで python -m timeit を実行し、計測したい Python ステートメントを引数として渡す。

python -m timeit "your_statement"

たとえば、以下のように timeit コマンドを使用して、リストの生成処理を計測することができる。

python -m timeit "[i for i in range(1000)]"

timeit モジュールを使用するメリット。

記述が簡単

timeit モジュールを使用すると、計測したいコードを文字列として簡単に指定できる。そのため、コード内に特別な記述を追加する必要がなく、計測用のコードを簡潔に保つことができる。

平均の実行結果が得られる

timeit モジュールを使用すると、複数の実行を行って平均実行時間を計算することができる。
これにより計測結果が安定化し、より正確な実行時間を得ることができる。

比較的良い精度

timeit モジュールは、Pythonのグローバルロックを避けるために、実行時間を計測するために別のプロセスを使用する。これにより、メインスレッドで実時刻を都度取得して差分を計算するよりもオーバーヘッドが小さくなる。

柔軟性

timeit モジュールにはさまざまなオプションが用意されており、計測する回数やセットアップコードの実行、グローバル/ローカルなコンテキストでの計測など、さまざまな条件で計測を行うことができる。

組み込みの機能である

timeit モジュールはPythonの標準ライブラリに含まれているため、追加のインストールが不要である。すぐに使用でき、環境依存性の問題が少ないのもメリット。

タイトルとURLをコピーしました