
【Python】時間計測をミリ秒単位で実装する方法
公開: 更新:Pythonでミリ秒単位の時間を計測する方法
Pythonでミリ秒単位の時間計測を行うには、標準ライブラリの「time」モジュールが広く利用されています。timeモジュールの`time()`関数は浮動小数点数で秒数を返すため、これに1000を掛けることでミリ秒に変換できます。
import time
# 開始時間を記録
start_time = time.time()
# 計測したい処理
for i in range(1000000):
pass
# 終了時間を記録
end_time = time.time()
# 経過時間をミリ秒で計算
elapsed_time_ms = (end_time - start_time) * 1000
print(f"処理時間: {elapsed_time_ms:.3f} ミリ秒")
【実行結果】
処理時間: 14.582 ミリ秒
行番号 | 詳細説明 |
---|---|
1行目 | timeモジュールをインポート |
3行目 | time.time()関数で現在時刻を秒単位で取得し開始時間として記録 |
5行目 | 100万回のループを実行する処理(計測対象) |
7行目 | time.time()関数で現在時刻を秒単位で取得し終了時間として記録 |
9行目 | 終了時間から開始時間を引いて経過秒数を計算し、1000を掛けてミリ秒に変換 |
10行目 | 計算した処理時間をミリ秒単位で小数点以下3桁まで表示 |
time.timeモジュールはシステムの時計に依存するため、システムの時刻が変更された場合に不正確な結果となる可能性があります。より精度の高い計測が必要な場合は`time.perf_counter()`関数を使用することによって、システム時計の影響を受けない時間計測が可能となります。
【PR】『Python』を学べる企業・個人向けのプログラミングコース
perf_counterでミリ秒単位の時間計測を行う方法
Pythonで高精度な時間計測を行うには、`time.perf_counter()`関数が最適です。この関数はシステム時計の変更の影響を受けず、高い精度で経過時間を測定できるため、ベンチマークテストやパフォーマンス分析に適しています。
import time
# 高精度な開始時間を記録
start_time = time.perf_counter()
# 計測したい処理
for i in range(1000000):
pass
# 高精度な終了時間を記録
end_time = time.perf_counter()
# 経過時間をミリ秒で計算
elapsed_time_ms = (end_time - start_time) * 1000
print(f"処理時間: {elapsed_time_ms:.3f} ミリ秒")
【実行結果】
処理時間: 13.692 ミリ秒
行番号 | 詳細説明 |
---|---|
1行目 | timeモジュールをインポート |
3行目 | time.perf_counter()関数で高精度な現在時刻を取得し開始時間として記録 |
5行目 | 100万回のループを実行する処理(計測対象) |
7行目 | time.perf_counter()関数で高精度な現在時刻を取得し終了時間として記録 |
9行目 | 終了時間から開始時間を引いて経過秒数を計算し、1000を掛けてミリ秒に変換 |
10行目 | 計算した処理時間をミリ秒単位で小数点以下3桁まで表示 |
`time.perf_counter()`は、Pythonのバージョン3.3以降で導入された関数であり、旧バージョンで使用されていた`time.clock()`関数の代替として推奨されています。この関数はオペレーティングシステムに依存しない一貫した結果を提供します。
datetimeモジュールでミリ秒単位の時間計測を行う方法
Pythonのdatetimeモジュールを使用すると、日付と時刻の差分からミリ秒単位の経過時間を計算できます。このモジュールは特に人間が読みやすい形式での時間表示や日付を含む時間間隔の計測に適しています。
import datetime
# 開始時間を記録
start_time = datetime.datetime.now()
# 計測したい処理
for i in range(1000000):
pass
# 終了時間を記録
end_time = datetime.datetime.now()
# 経過時間を計算
elapsed_time = end_time - start_time
# ミリ秒に変換
elapsed_ms = elapsed_time.total_seconds() * 1000
print(f"処理時間: {elapsed_ms:.3f} ミリ秒")
【実行結果】
処理時間: 14.955 ミリ秒
行番号 | 詳細説明 |
---|---|
1行目 | datetimeモジュールをインポート |
3行目 | datetime.now()関数で現在の日時を取得し開始時間として記録 |
5行目 | 100万回のループを実行する処理(計測対象) |
7行目 | datetime.now()関数で現在の日時を取得し終了時間として記録 |
9行目 | 終了時間から開始時間を引いてtimedeltaオブジェクトを取得 |
11行目 | timedeltaオブジェクトから秒数を取得し、1000を掛けてミリ秒に変換 |
12行目 | 計算した処理時間をミリ秒単位で小数点以下3桁まで表示 |
datetimeモジュールは、タイムゾーン情報を含む日時の取り扱いに優れています。処理の開始時刻と終了時刻を記録し、後で分析する場合など、時刻情報自体も重要な場合にこのアプローチが役立ちます。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- 【Windows編】Pythonのバージョンをアップデートする方法
- 【Python】グローバル変数を別ファイルで管理・利用する方法
- バージョン確認でPythonだけ表示される原因と対処法
- 【Python】リスト(list)の括弧を外す方法