使用Python统计函数执行时间的装饰器
装饰器的使用场景:
为函数新增功能,解决重复性的操作,使得代码简洁,更模块儿化
装饰器本质上是一个Python函数,
它可以在不改变原始函数的情况下,添加一些额外的功能,例如日志记录、缓存结果,以及计算函数的运行时间。
接收另一个函数作为参数,并返回一个新函数。
在Python中,可以使用@符号放置在要被装饰的函数前面,将一个装饰器应用到一个函数上。
以下是一个简单的计时装饰器的例子:
import time
def
calculate_time
(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
cost_time = end - start
print(“花费时间:{}秒”.format(cost_time)")
return result
return wrapper
calculate_time()是一个装饰器函数,它接受一个函数作为输入参数,并且返回一个新的函数wrapper。
wrapper()可以接收任何数量和类型的输入参数,并在执行原始函数之前记录起始时间。然后执行原始函数,获取函数的结果;最后记录结束时间,并计算函数的运行时间。运行时间输出到控制台,然后返回原始函数的结果。
装饰器最终会返回新的函数wrapper,因此它将替换原始函数。
使用“@calculate_time”将装饰器应用于需要计算运行时间的函数。
@calculate_time
def myfunc():
time.sleep(1)
print("Function executed")
myfunc()