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の標準ライブラリに含まれているため、追加のインストールが不要である。すぐに使用でき、環境依存性の問題が少ないのもメリット。