【Python】時間計測をミリ秒単位で実装する方法

【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やプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する