ユーニックス総合研究所

  • home
  • archives
  • python-elapsed-time

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秒間仕事をさせています。
その前後のstartendに時間を保存します。
そしてそれらの時間を「経過時間 = 終了時間 - 開始時間」という 式で計算します。
その結果が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  

datedatetimeオブジェクト同様に差分を計算することができます。

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...