在做性能优化时,我们往往会统计程序的运行时长,以此作为优化好坏的依据之一。
一般做法是,在程序运行前得到一个开始时间,在程序主体结束后再得到一个结束时间,计算两者差值,得到运行时长。如下:
import time
def test():
start = time.time()
t = [i for i in range(10000*100)] #生成100万个整数元素的列表
end = time.time()
print('用时:%4.2f'%(end-start))
看起来没啥问题,但有大量函数需要统计时,如果每个函数都这样写,那就不符合python
简洁、优雅的特性了。
这个时候,使用装饰器
便能很好地解决这一问题。改写如下:
import time
from functools import wraps
'''
运行时间统计装饰器
'''
def calcu_run_time(func):
@wraps(func)
def calcu_wrapper(*args,**kwargs):
start = time.time()
func(*args,**kwargs)
print('执行函数%s用时:%4.2f'%(func.__name__,time.time()-start))
return calcu_wrapper
#使用装饰器
@calcu_run_time
def test():
t = [i for in range(10000*100)]
test()
结果:
执行函数test用时:0.20秒
博主其他文章推荐:
[1] 【python实用特性】- 迭代、可迭代对象、迭代器
[5] 【Matplotlib】-自定义坐标轴刻度完成20万+数据的可视化
[8] requests设置请求头、代理