共计 641 个字符,预计需要花费 2 分钟才能阅读完成。
咱们用两种形式来实现计时器。
- 润饰器实现计时器
- 生成器实现计时器
润饰器实现计时器
import time | |
def 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_dec | |
def haha(): | |
print('笑死我了') | |
time.sleep(0.01) | |
haha() |
输入后果
笑死我了 | |
pay time is 0.010136842727661133 s |
生成器实现计时器
应用生成器的形式实现,须要借助 Python 内置库 contextlib 帮忙。
不是说必须借助 contextlib,而是用 contextlib 能够更加优雅
能够参考:浅淡 python 中 with 的用法,上下文管理器
from contextlib import contextmanager | |
def haha(): | |
print('笑死我了') | |
time.sleep(0.01) | |
@contextmanager | |
def 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 |
正文完