Pythonで経過時間を計測する方法を完全ガイド!初心者でもわかるtime.perf_counter()の使い方
生徒
「Pythonで処理にどれくらい時間がかかったか測る方法ってあるんですか?」
先生
「もちろんありますよ。Pythonではtimeというモジュールを使えば簡単に経過時間を調べられます。」
生徒
「どれを使えば正確に計測できますか?なんとなくtime.time()でできそうですが…」
先生
「time.time()も使えますが、正確に測るならtime.perf_counter()がおすすめですよ。精度が高くて、計測専用のタイマーなんです。」
1. Pythonで経過時間を計測するとは?
経過時間の計測というのは、プログラムが実行されてから処理が終わるまでにかかった時間を調べることです。例えば、ファイルを読み込む処理が遅いと感じたときに、実際どのくらい時間がかかっているか確認するのに使います。プログラムの性能を調べるためのとても大切な作業です。
Pythonでは、timeモジュールに含まれる関数を使うことで、初心者でも簡単に時間を計測できます。その中でも特に便利なのがtime.perf_counter()です。これは高精度で時間を測るための関数で、機械の内部時計のように細かい時間を正確に計ることができます。
2. time.perf_counter()とは?
time.perf_counter()は、経過時間を正確に計測するためのタイマーです。perfという名前は「パフォーマンス」を意味していて、計測専用に作られています。パソコン内部で動いている高精度な時計を使って時間を取り出します。
毎回違う値が返ってくるため「今の時刻」という意味では使えませんが、startとendを比べることで経過時間を求めることができます。ゲームの処理速度を調べたり、大量のデータ処理の性能を確認するときによく使われます。
import time
start = time.perf_counter()
time.sleep(1.5)
end = time.perf_counter()
print(end - start)
3. time.sleep()で動作を止めてみよう
time.sleep()は、指定した秒数だけプログラムを止める関数です。例えば、ゲームで「1秒待ってから次の動作をする」といった場面で使われます。また、計測の練習としてtime.sleep()を使うと、確実に時間がかかる処理を作れるので便利です。
import time
print("スタート")
time.sleep(2)
print("2秒経過しました")
4. 経過時間を計測するサンプルコード
ここでは、time.perf_counter()とtime.sleep()を組み合わせて、実際にどれくらい時間がかかったか計測するサンプルを紹介します。初心者でもすぐに理解できるシンプルな例です。
import time
start = time.perf_counter()
time.sleep(1.2)
end = time.perf_counter()
print(f"処理にかかった時間: {end - start} 秒")
処理にかかった時間: 1.2004 秒
5. perf_counter()が便利な理由
精度が高いので、短い処理も正確に計測できます。例えば、計算処理が0.001秒しかかからないような場面ではtime.time()では誤差が大きくなりますが、perf_counter()なら安心して計測できます。
また、PCの内部時計が変更されたとしても影響を受けないという特徴があります。これは、内部で使われている時計が実際の現在時刻とは別の仕組みで動いているためです。そのため、環境の違いによるズレが少なく、さまざまな処理の評価に向いています。
6. よくある使い方の例
経過時間を調べる場面は初心者でも多くあります。例えばファイルを読む時間、繰り返し処理の速度、インターネットからデータを取得する処理などです。こうした処理にどれくらい時間がかかっているか調べることで、どこを改善するべきか見えてきます。