ChatGPTにデコレーターを利用した処理時間計測Pythonコードを書いてもらいました。
指示分(プロンプト):
デコレーターを用いてpythonコードの実行時間を計測したいです。計測するコードへの変更は極力抑えたいので、デコレーターを外部化する形にしてください。サンプルコードを提示してください。
回答:
デコレーターを外部モジュールに定義し、必要なコードに適用することができます。以下は、外部モジュールとしてデコレーターを定義する方法の例です。
timer.pyというファイルを作成し、以下のようにtimerデコレーターを定義します。
import time
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"実行時間: {end_time - start_time}秒")
return result
return wrapper
このファイルをインポートして、デコレーターを適用するコードに@timerをつけます。
from timer import timer
@timer
def my_function():
# ここに計測したいコードを記述します
pass
# my_functionを呼び出すと、実行時間が出力されます
my_function()
この方法を使用すると、デコレーターのコードを別ファイルに分離することができます。また、timer.pyファイルを必要なプロジェクトのディレクトリに配置することで、複数のプロジェクトで再利用できるようになります。
結果:
以下のように成功しました。