Table of Contents
はじめに
この記事では、Pythonで関数の実行時間を簡単に計測し、秒単位で表示する方法を紹介します。
具体的には、関数の開始時刻と終了時刻を記録し、その差分を表示するデコレータを作成する方法を解説します。
このデコレータを使用することで、任意の関数に対して実行時間を簡単に測定できるようになります。
方法
このデコレータは関数の呼び出し前に現在時刻を記録し、呼び出し後に再び時刻を記録します。
そして、両時刻の差分を計算して実行時間を表示します。datetime.datetime.now().replace(microsecond=0)
により、
表示される時刻は秒単位までとなり、ミリ秒以下は切り捨てられます。
import datetimeimport functools
def time_decorator(func): """開始時刻と終了時刻を表示するデコレーター"""
@functools.wraps(func) def wrapper(*args, **kwargs): start_time = datetime.datetime.now().replace(microsecond=0) print("-" * 40) print(f"開始時刻: {start_time}") # 開始時刻を表示
result = func(*args, **kwargs)
end_time = datetime.datetime.now().replace(microsecond=0) print(f"終了時刻: {end_time}") # 終了時刻を表示 print(f"実行時間: {end_time - start_time}") # 実行時間を表示
return result
return wrapper
使用例
このデコレータを実際の関数に適用するには、以下のようにします。
このサンプル関数sample_functionは、指定された秒数だけプログラムの実行を一時停止します。
デコレータ@time_decorator
を適用することで、この関数の実行開始時刻と終了時刻、および実行にかかった時間が表示されます。
import time
# デコレーターの使用例@time_decoratordef sample_function(seconds): """指定された秒数だけ待機するサンプル関数""" time.sleep(seconds) print('実行中1') print('実行中2') print('実行中3')
# 関数を実行してみるsample_function(3)
# Output# ----------------------------------------# 開始時刻: 2024-08-14 14:05:53# 実行中1# 実行中2# 実行中3# 終了時刻: 2024-08-14 14:05:56# 実行時間: 0:00:03