Python実装関数タイマ
10356 ワード
python実装関数タイマには、次の2つの方法があります.デコレーションを用いる を実現する.コンテキスト管理による を実現する.
装飾実装:
コンテキスト管理の実装
まとめ:は装飾器を用いて計時し、使いやすく、関数ヘッドに装飾器を導入すればよく、ある関数体に対して計時するしかない. コンテキスト管理を使用してタイミングを計るのは、操作上面倒ですが、1つのコードブロックに対してタイミングを計ることができます.
装飾実装:
#
from functools import wraps
from datetime import datetime
from time import sleep
def timer(func):
@wraps(func)
def inner(*args, **kwargs):
start_time = datetime.now()
print("start time is {}".format(datetime.now()))
result = func(*args, **kwargs)
end_time = datetime.now()
print("end time is {}".format(datetime.now()))
print(" :{}".format(end_time - start_time))
return result
return inner
@timer
def run(): #timer(run)
print(" :")
sleep(5)
print(" ")
if __name__ == '__main__':
run()
#
start time is 2020-05-19 09:02:37.669742
:
end time is 2020-05-19 09:02:42.673055
:0:00:05.003327
コンテキスト管理の実装
#
class timer(object):
def __enter__(self):
self.t0 = datetime.now()
print("start time is {}".format(datetime.now()))
def __exit__(self, exc_type, exc_val, exc_tb):
print("end time is {}".format(datetime.now()))
print(" :{}".format(datetime.now() - self.t0))
def run():
print(" ")
sleep(5)
print(" ")
if __name__ == '__main__':
with timer() as t:
run()
#
start time is 2020-05-19 09:01:44.077509
end time is 2020-05-19 09:01:50.086083
:0:00:06.008637
まとめ: