
プログラムを作成していると、「この処理にどれくらいの時間がかかっているのかな?」とか、「次の処理まで少し待機したいな」と思うことがありますよね。Pythonの標準ライブラリであるtimeモジュールは、そんな時間に関する操作を簡単に行うことができる、とても便利なツールです。今回は、その基本的な使い方から応用例まで、一緒に見ていきましょう。
概要
timeモジュールは、Pythonプログラム内で時間に関連する様々な機能を提供します。具体的には、現在の時刻を取得したり、プログラムの実行を一時停止させたり、処理にかかった時間を計測したりといったことが可能です。
主な機能は以下の通りです。
time.time(): 現在のUNIXエポックからの経過秒数(浮動小数点数)を取得します。この値は、プログラムの実行時間計測によく利用されます。time.sleep(秒数): 指定した秒数の間、プログラムの実行を一時停止させます。time.perf_counter()/time.process_time(): より高精度な時間計測が必要な場合に利用される関数です。perf_counter()はシステム全体で利用可能な高解像度タイマー、process_time()はCPU使用時間に基づいたタイマーを提供します。
これらの関数を使うことで、プログラムの動作を細かく制御し、効率的な処理を実現することができます。
メリット
timeライブラリを利用するメリットはいくつかあります。
- プログラムのパフォーマンス計測:特定の処理にかかる時間を正確に計測し、ボトルネックの特定や改善に役立てることができます。
- 処理の一時停止:ネットワークリクエストの間に待機したり、一定間隔で処理を繰り返したりする際に、プログラムの実行を一時的に止めることができます。
- シンプルで使いやすいAPI:基本的な機能は直感的に理解しやすく、少ないコード量で実装できます。
- 標準ライブラリ:Pythonに標準で組み込まれているため、追加のインストールなしですぐに利用を開始できます。
サンプルコード
それでは、実際にtimeライブラリを使ったコードを見てみましょう。今回は「処理の一時停止」と「実行時間計測」の例です。
import time
print("プログラムを開始します。")
# 1. 現在のUNIXタイムスタンプを取得
start_time = time.time()
print(f"開始時刻 (UNIXタイムスタンプ): {start_time}")
# 2. 処理の一時停止 (5秒間)
print("5秒間待機します...")
time.sleep(5) # ここでプログラムが5秒間停止します
print("待機が終了しました。")
# 3. 実行時間計測
end_time = time.time()
print(f"終了時刻 (UNIXタイムスタンプ): {end_time}")
# 経過時間を計算
elapsed_time = end_time - start_time
print(f"このプログラムの総実行時間は {elapsed_time:.2f} 秒でした。")
print("\n-------------------------------\n")
# 高精度タイマーを使った例(より厳密なパフォーマンス計測に)
print("高精度タイマーで短い処理時間を計測します。")
perf_start = time.perf_counter() # 高精度タイマーを開始
sum_val = 0
for i in range(1000000):
sum_val += i
perf_end = time.perf_counter() # 高精度タイマーを終了
perf_elapsed = perf_end - perf_start
print(f"100万回ループの処理時間は {perf_elapsed:.6f} 秒でした。")このコードを実行すると、プログラムが途中で5秒間停止し、最終的に全体の実行時間が表示されるのが確認できるはずです。短いループ処理の計測にはperf_counter()が役立ちますね。
プログラムの実行中にコーヒーブレイクを挟むこともできちゃいますね!
みーちゃんのワンポイント
timeモジュールが扱う時間は、基本的にUNIXエポック(1970年1月1日0時0分0秒UTC)からの経過秒数であり、タイムゾーンの情報は持っていません。正確な日付や時刻、タイムゾーンを意識した処理を行いたい場合は、より高機能なdatetimeモジュールを使うことを検討してくださいね。time.sleep()はプログラム全体の処理を停止させるので、並行処理が必要な場合は注意が必要です。

