网站的目的及功能规划,网站下载的app删除了怎么找到,学做网站论坛课程,网站开发技能思路
python使用修饰器记录方法耗时#xff0c;目的是每当方法执行完后#xff0c;可以记录该方法耗时#xff0c;而不需要在每个方法的执行前后#xff0c;去创建一个临时变量#xff0c;来记录耗时。
方式一#xff08;不推荐#xff09;#xff1a;
在每个方法的…思路
python使用修饰器记录方法耗时目的是每当方法执行完后可以记录该方法耗时而不需要在每个方法的执行前后去创建一个临时变量来记录耗时。
方式一不推荐
在每个方法的执行前后去创建一个临时变量来记录耗时代码如下缺点在于如果有10个、100个方法那不得写10次、100次且这样去写容易写漏而且过于冗余
def fun():# 开始计时start_time time.time()# 模拟耗时time.sleep(2)# 停止计时end_time time.time()print(fun01执行喽)方式二推荐
使用装饰器来记录耗时好处在于将其标注在需要记录的方法前这样的做法相当于将这个方法传递给另一个方法中。让方法A去执行方法B俗称套娃。 这样的好处在于我们只需要做标注不用去改动到需要记录耗时的方法中的内容这样可以减少出错和冗余代码如下
import time
# 使用装饰器记录方法执行耗时
def timer(method_name):def decorator(func):def wrapper(*args, **kwargs):# 开始计时start_time time.time()# 执行方法result func(*args, **kwargs)# 停止计时end_time time.time()# 统计耗时并输出execution_time end_time - start_timelog {} 执行耗时: {:.2f} 秒.format(method_name, execution_time)print(log)return resultreturn wrapperreturn decorator# 方法1 使用装饰器标注
timer(fun01())
def fun01():# 模拟耗时time.sleep(2)print(fun01执行喽)# 方法2 不使用任何标注
def fun02():# 模拟耗时time.sleep(1)print(fun02执行喽)# 方法3 使用装饰器标注
timer(fun03())
def fun03():# 模拟耗时time.sleep(3)print(fun03执行喽)# 顺序执行fun01、02和03
fun01()
fun02()
fun03()代码直接执行可以看到如下的输出 1.输出fun01()“执行喽”却输出耗时是2.01秒因为这里sleep了2秒且使用了装饰器。 2.输出fun02()“执行喽”但未记录执行耗时原因是这里并未使用“装饰器”记录方法的耗时。 3.输出fun03()“执行喽”却输出耗时是3.00秒因为这里sleep了3秒且使用了装饰器。
整理不易
点赞关注呗