咱们用两种形式来实现计时器。
- 润饰器实现计时器
- 生成器实现计时器
润饰器实现计时器
import timedef timer_dec(func): def inner(*args, **kwargs): start = time.time() ret_val = func(*args, **kwargs) end = time.time() print(f'pay time is {end-start} s') return ret_val return inner@timer_decdef haha(): print('笑死我了') time.sleep(0.01)haha()
输入后果
笑死我了pay time is 0.010136842727661133 s
生成器实现计时器
应用生成器的形式实现,须要借助 Python 内置库 contextlib 帮忙。
不是说必须借助 contextlib,而是用 contextlib 能够更加优雅
能够参考:浅淡python中with的用法,上下文管理器
from contextlib import contextmanagerdef haha(): print('笑死我了') time.sleep(0.01)@contextmanagerdef timer_gen(): start = time.time() yield end = time.time() print(f'pay time is {end-start} s')with timer_gen(): haha()
输入后果
笑死我了pay time is 0.010103464126586914 s