このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】時刻を取得するtimeモジュール

時刻を取得するtimeモジュール

 timeモジュールは、Pythonで時刻データにアクセスし、変換や計測を行うための標準ライブラリです。UNIXエポック(1970年1月1日0時0分0秒)からの経過秒数を基本とし、現在時刻の取得、UTCとローカルタイムの変換、さらにはプログラムの一時停止や経過時間の計測など、さまざまな用途に利用されます。ここでは、timeモジュールの主要な関数とその使い方を、構文の説明、引数の意味、具体例を交えて解説します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.現在時刻の取得と時刻変換

1.1. time関数

time() 関数は、現在の時刻をエポックからの経過秒数(浮動小数点数)として返します。
例えば、以下のコードは現在時刻を取得して画面に出力する例です。

【構文】

time.time()

【time() 関数の概要】

関数名引数戻り値説明
time()なしfloat 型(経過秒数)UNIXエポックからの経過秒数を返す。
import time
current_epoch = time.time()
print("Current epoch time:", current_epoch)

実行結果

Current epoch time: 1740672852.6650946

解説

 time.time()は、1970年1月1日からの経過秒数を浮動小数点数で返します。これにより、プログラム内で時刻計測やタイムスタンプの生成が可能になります。

1.2. 時刻の形式変換:gmtime関数とlocaltime関数

 gmtime() 関数と localtime() 関数は、エポック秒を人間が理解しやすい形式(struct_time)に変換します。

  • gmtime() は協定世界時 (UTC) に基づいた時刻情報を返します。
  • localtime() はシステムのロケール設定に合わせた現地時刻を返します。

【構文】

time.gmtime([秒数])
time.localtime([秒数])

【gmtime() / localtime() 関数のパラメータ・戻り値】

関数名引数戻り値主なフィールド例
gmtime()エポック秒(指定可、デフォルトは現在時刻)struct_time オブジェクトtm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec
localtime()エポック秒(指定可、デフォルトは現在時刻)struct_time オブジェクトtm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec

struct_time の各フィールドは以下のような意味を持ちます。

フィールド名内容
tm_year年(西暦)
tm_mon月(1~12)
tm_mday日(1~31)
tm_hour時(0~23)
tm_min分(0~59)
tm_sec秒(0~61、うるう秒対応)
import time
# 協定世界時 (UTC) の現在時刻を取得
utc_time = time.gmtime()
print("UTC time:", utc_time)

# 使用環境に基づくローカルな現在時刻を取得
local_time = time.localtime()
print("Local time:", local_time)

実行結果

UTC time: time.struct_time(tm_year=2025, tm_mon=2, tm_mday=27, tm_hour=16, tm_min=16, tm_sec=36, tm_wday=3, tm_yday=58, tm_isdst=0)
Local time: time.struct_time(tm_year=2025, tm_mon=2, tm_mday=28, tm_hour=1, tm_min=16, tm_sec=36, tm_wday=4, tm_yday=59, tm_isdst=0)

解説

 time.gmtime()はUTC(協定世界時)における現在の時刻情報を、time.localtime()はシステムのローカル設定に従った時刻情報を返します。両者とも、time.struct_timeオブジェクトで返され、年(tm_year)、月(tm_mon)、日(tm_mday)、時(tm_hour)などの属性を持ちます。

2.時刻待機と経過時間の計測

2.1. sleep関数

【構文】

time.sleep(秒数)
項目説明
秒数実行を一時停止する秒数。浮動小数点数も指定可能。
返り値なし。指定された秒数だけプログラムの実行を停止する。
import time
print("Waiting for 3 seconds...")
time.sleep(3)
print("3 seconds have passed.")

実行結果

Waiting for 3 seconds...
3 seconds have passed.

解説

 time.sleep(3)は、プログラムの実行を約3秒間停止します。これにより、処理のタイミング調整や待機時間の挿入が容易になります。

2.2. 経過時間の計測

以下の例は、time関数とsleep関数を組み合わせ、ある処理の実行時間を計測するプログラムです。

import time
start_time = time.time()  # 現在時刻を記録
print("Processing... (wait for 3 seconds)")
time.sleep(3)           # 3秒間の待機
elapsed_time = time.time() - start_time  # 経過時間を計算
print("Elapsed time:", elapsed_time, "seconds")

実行結果

Processing... (wait for 3 seconds)
Elapsed time: 3.0011982917785645 seconds

解説

  • start_timeにtime.time()で現在の秒数を記録し、time.sleep(3)で3秒待機します。
  • その後、再びtime.time()を呼び出し、start_timeとの差を計算することで、正確な経過時間を得ることができます。

補足

 実行時間の計測において、timeモジュールの使用は簡便ですが、より正確な測定が必要な場合は、timeitモジュールの利用を検討してください。

まとめ

 timeモジュールは、プログラムの時刻取得、変換、待機、そして経過時間の計測において不可欠なツールです。

  • time関数は、UNIXエポックからの経過秒数を返し、現在時刻の基本情報を提供します。
  • gmtime関数とlocaltime関数は、UTCおよびローカルな時刻情報をtime.struct_time形式で返し、各種時刻属性にアクセス可能です。
  • sleep関数は、プログラムの実行を指定秒数だけ停止し、経過時間の計測に利用できます。

 これらの関数を活用することで、時刻に関連する処理が効率的に実装でき、プログラムのタイミング制御やパフォーマンス評価が容易になります。、より高度な計測が必要な場合は timeit モジュールなども検討してください。