Pythonで経過時間(差分)を取得する: 日時、時刻
- 作成日: 2021-06-13
- 更新日: 2023-12-24
- カテゴリ: Python
Pythonで経過時間(差分)を取得する
Pythonではライブラリを使うことで時間に関する処理を書くことができます。
特定の処理の経過時間を計測したい場合はtimeを使います。
結論から言うとtime
を使った経過時間の取得は↓のようにします。
import time
start = time.time() # 開始時間を取得
time.sleep(3) # 何らかの時間のかかる処理
end = time.time() # 終了時間を取得
dif = end - start # 差分を計算
print(dif)
# 3.0030386447906494
この記事では経過時間の取得について具体的に↓を見ていきます。
- timeを使った時間の計測
- datetimeを使った時間の計測
関連記事
関連記事
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
形態素解析で代名詞+助詞+名詞を文章から抜き出す【Python, 自然言語処理, Janome】
在宅・未経験、Pythonで稼ぐ方法は?【取引・宣伝・広告】
timeを使った時間の計測
time
はPythonの標準ライブラリで、時刻データを取り扱うモジュールです。
time.time()
はエポックからの秒数を浮動小数点数で返す関数です。
エポックとは時刻の基点のことで、WindowsやLinuxによって違います。
UNIX系では1970年1月1日0時0分0秒がエポックです。
エポックはtime.gmtime(0)
で確認することができます。
print(time.gmtime(0))
# time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
このエポックから現在までの経過時間を秒数で返すのがtime.time()
です。
import time
tm = time.time()
print(tm)
# 1619613084.051934
このtime.time()
を利用することで、特定の処理の前に時間を取得して、そして特定の処理の後にまた時間を取得し、それらの時間の差分を計算することで経過時間を取得できるというのがtime.time()
を使った時間の計測です。
start = time.time() # 開始時間を取得
time.sleep(3) # 何か処理
end = time.time() # 終了時間を取得
dif = end - start # 差分を計算
print(dif) # 3.0030694007873535
↑の場合、time.sleep(3)
で3秒間仕事をさせています。
その前後のstart
とend
に時間を保存します。
そしてそれらの時間を「経過時間
= 終了時間 - 開始時間
」という 式で計算します。
その結果がdif
になりますが、これが経過時間となります。
↑の場合は約3
秒経過してるのがわかります。
datetimeを使った時間の計測
datetime
モジュールは日付と時間をあつかうPythonの標準ライブラリです。
このモジュールを使うと日付と時間に関する処理を書くことができます。
datetime.datetime
オブジェクトは日付と時間を両方扱えるオブジェクトです。
このdatetime.datetime
のクラスメソッドであるtoday()
を使うと現在時刻を取得することができます。
from datetime import datetime
today = datetime.today()
print(type(today))
# <class 'datetime.datetime'>
print(today)
# 2021-04-28 00:00:00.000000
time.time()
を使うように何らかの処理の前と後に現在時刻を取得しておき、それを差分として計算させれば経過時間がわかります。
from datetime import datetime
import time
start = datetime.today() # 開始時刻を取得
time.sleep(3) # 何らかの処理
end = datetime.today() # 終了時刻を取得
dif = end - start # 差分を計算
print(dif)
# 0:00:03.003057
datetime
オブジェクト同士を演算するとその結果はtimedelta
オブジェクトになります。
start = datetime.today()
time.sleep(3)
end = datetime.today()
dif = end - start
print(type(dif))
# <class 'datetime.timedelta'>
timedelta
オブジェクトの属性seconds
にアクセスすると、経過時間秒数を取得することができます。
print(dif.seconds)
# 3
dateを使った時間の計測
datetime
モジュールのdate
オブジェクトは日付を扱うオブジェクトです。
このdate
オブジェクトでも差分を計算することができます。
date
オブジェクトのtoday()
メソッドを使うと現在の日付を取得することができます。
from datetime import date
today = date.today()
print(type(today))
# <class 'datetime.date'>
print(today)
# 2021-04-28
date
もdatetime
オブジェクト同様に差分を計算することができます。
from datetime import date
import time
start = date.today()
time.sleep(3)
end = date.today()
dif = end - start
print(dif)
# 0:00:00
date
オブジェクト同士の演算もその結果はtimedelta
オブジェクトになります。
start = date.today()
time.sleep(3)
end = date.today()
dif = end - start
print(type(dif))
# <class 'datetime.timedelta'>
timedelta
オブジェクトのdays
にアクセスすると経過日数を取得することができます。
print(dif.days)
# 0
おわりに
今回はPythonで経過時間を取得する方法を見てみました。
🦝 < 何時間経ったかな?
🐭 < 100年
🦊 < You died...