写一个装饰器来计算函数的执行时间,python函数装饰器详解
本文主要详细介绍Python函数运行时间的计算。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。
00-1010个人理解例子:一边计时一边调用函数。实现方法1: @ syntax sugar代码:实现结果:实现方法2:闭包代码:实现结果:实现方法1和2的区别汇总
目录
Decorator:通过关闭一个函数,并将一个函数作为另一个函数参数,实现对已有函数的灵活调用。
例如:
首先设置一个time_master的定时器函数,用来统计一个函数运行时的时间消耗。
然后,如果你想知道一个函数的性能,把它放到time_master函数中,每写一个新函数就运行一次。
这相当麻烦。相当于有了一个秤,但是所有新买的食材都需要一个一个的称重,才能得出食材的重量。
3354如果能一劳永逸地省去称重这一步就好了。
3354比如每种食材进门,都是按秤走的。当它进来时,它也有重量数据。
个人理解
例子:调用函数的同时对函数进行计时
实现方法1:@语法糖
#说到计时,就需要引入时间模块了。
导入时间
#定义一个用于统计函数运行时间的定时器,用func代替要统计的函数作为参数。
def time_master(func):
定义call_func():
Print(计时器启动:函数开始调用:)
start_time=time.time()
函数()
end_time=time.time()
打印(“计时器结束,函数调用完成”)
return print(f timer result returns:函数调用耗时{end_time-start_time:2f} )
返回调用函数
@时间_主人
#即调用myfunc函数时,不直接调用myfunc。
#而是将myfunc函数作为参数放入@的decorator中,然后调用decorator。
def myfunc():
时间.睡眠(2)
打印(“myfunc函数运行”)
时间.睡眠(4)
打印(“myfunc函数运行完毕”)
Myfunc() #调用Myfunc
代码:
计时器启动:函数开始调用:
Myfunc函数运行
myfunc函数完成。
计时器结束,函数调用完成。
计时器返回:函数调用耗时6.01小时。
实现结果:
可以理解为最初定义了一个myfunc函数,但是这个函数本身没有计时的功能。相反,它恰好有一个time_master函数,可以在运行子函数时为它们计时。
所以通过重新定义myfunc=time_master(myfunc),也就是把myfunc作为myfunc函数的新定义传入time_master。
实现方法2:闭包
导入时间
def time_master(func):
定义call_func():
Print(计时器启动:函数开始调用:)
start_time=time.time()
函数()
end_time=time.time()
打印(“计时器结束,函数调用完成”)
Print(f timer result returns:函数调用耗时{end_time-start_time:2f} )
返回调用函数
def myfunc():
时间.睡眠(2)
打印(“myfunc函数运行”)
时间.睡眠(4)
打印(“myfunc函数运行完毕”)
myfunc=time_master(myfunc) #与实现方法1的区别在于myfunc函数是在myfunc @ decorator之前还是之后定义两次。
myfunc()
代码:
计时器启动:函数开始调用:
Myfunc函数运行
myfunc函数完成。
计时器结束,函数调用完成。
计时器返回:函数调用耗时6.01小时。
实现结果:
其实实现方法1和实现方法2:没有区别。无非是在开始的时候用@time_master来指定,或者在定义myfunc之后,多走一步让myfun放入time_master来执行。
实现方式1和 2的差异
本文到此为止。希望能帮到你,也希望你能多关注更多热门IT软件开发工作室的内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。