ユーニックス総合研究所

  • home
  • archives
  • python-jikan-keisoku

Pythonで時間計測する方法【time】

  • 作成日: 2023-06-28
  • 更新日: 2023-12-24
  • カテゴリ: Python

Pythonで時間計測する方法は?

timeモジュールを使います。
time.time()を使うと現在時刻を取得できます。

まず何かの処理の処理時間を計測するとして、処理前に時間を1つ変数に入れておきます。
それから実際に処理を実行します。
そして処理が終わったらその時点での時間を別の変数に入れます。
そして2つの変数の差分を取ると処理にかかった時間がわかるようになります。

コードにすると以下になります。

import time  

start = time.time()  

time.sleep(1)  

end = time.time()  
dif = end - start  
print(dif)  
# 1.0009393692016602  

参照
time --- 時刻データへのアクセスと変換 — Python 3.7.17 ドキュメント

time.monotonic()で計測

time.monotonic()はモノトニッククロックの値(小数点以下がミリ秒)を返します。
この値はシステムクロックの更新の影響を受けません。
モノトニック時間で重要な点は値ではなく、その値が厳密に増加していくことが保証されているという点です。

import time  

start = time.monotonic()  

time.sleep(1)  

end = time.monotonic()  
dif = end - start  
print(dif)  
# 1.0  

time.monotonic_ns()で計測

これはtime.monotonic()とほぼ同じですが、ナノ秒単位の時刻を返す点が違います。

import time  

start = time.monotonic_ns()  

time.sleep(1)  

end = time.monotonic_ns()  
dif = end - start  
print(dif)  
# 1015000000  

time.perf_counter()で計測

time.perf_counter()は計測に使える関数で、これはパフォーマンスカウンターの値(小数点以下がミリ秒)を返します。
このクロックは短時間の計測にも耐えられるように可能な限り高い分解能を持っています。

import time  

start = time.perf_counter()  

time.sleep(1)  

end = time.perf_counter()  
dif = end - start  
print(dif)  
# 0.9998244999999999  

time.perf_counter_ns()で計測

time.perf_counter_ns()time.perf_counter()とほぼ同じですが、ナノ秒単位の時刻を返します。

import time  

start = time.perf_counter_ns()  

time.sleep(1)  

end = time.perf_counter_ns()  
dif = end - start  
print(dif)  
# 999662800  

time.process_time()で計測

ちなみにtime.process_time()という関数もあります。
これは現在のプロセスのシステムおよびユーザーCPU時間の合計値(小数点以下がミリ秒)を返します。
これはスリープ中の経過時間を含めないので、サンプルコードのようなtime.sleep()を使ったコードでは期待した結果が得られません。

import time  

start = time.process_time()  

time.sleep(1)  

end = time.process_time()  
dif = end - start  
print(dif)  
# 0.0  

しかしループ処理のようなスリープを使っていない処理の計測には使えます。

import time  

start = time.process_time()  

for i in range(100000000):  
    pass  

end = time.process_time()  
dif = end - start  
print(dif)  
# 2.4375  

time.process_time_ns()で計測

これはtime.process_time()とほぼ同じですが結果をナノ秒単位で返す点が違います。

import time  

start = time.process_time_ns()  

for i in range(100000000):  
    pass  

end = time.process_time_ns()  
dif = end - start  
print(dif)  
# 2609375000  

おわりに

今回はPythonで時間計測をする方法を解説しました。
なにか参考になれば幸いです。

🦝 < 時間計測!

🦝 < この処理は何秒かかる?