当前位置: 首页> 娱乐> 八卦 > python 方法运行计时装饰模式实现

python 方法运行计时装饰模式实现

时间:2025/8/9 16:43:06来源:https://blog.csdn.net/marsjin/article/details/139798589 浏览次数:0次

在代码开发过程中,需要记录方法的执行时间,每个方法都硬代码也可以实现,但是不是最好的方式,考虑到设计模式和模版代码,通过装饰模式实现方法运行计时

在Python中,装饰器可以接受参数,这样可以使装饰器更加灵活,能够根据不同的参数来调整其行为。要给timer装饰器增加特定参数,可以采用多层嵌套函数的方式来实现。下面是一个示例,展示如何给timer装饰器增加一个参数,例如单位(秒或毫秒):

import timedef timer(unit="seconds"):"""A decorator factory that creates a timer decorator with a specified unit."""def decorator(func):"""The actual timer decorator that wraps the function."""def wrapper(*args, **kwargs):start_time = time.time()result = func(*args, **kwargs)end_time = time.time()elapsed_time = (end_time - start_time) * (1000 if unit == "milliseconds" else 1)print(f"{func.__name__} executed in {elapsed_time:.4f} {unit}")return resultreturn wrapperreturn decorator# 使用装饰器,指定单位为毫秒
@timer(unit="milliseconds")
def my_function(n):# 假设这是一个耗时的操作time.sleep(n)# 调用函数
my_function(2)

在这个例子中,timer装饰器工厂接受一个参数unit,它决定计时单位是秒还是毫秒。decorator函数是真正的装饰器,它接受待装饰的函数func作为参数,并返回一个包装后的函数wrapperwrapper函数计算函数的执行时间,并根据unit参数将其转换为毫秒或保持为秒。

要使用带有特定参数的装饰器,你只需在@decorator语法前面加上参数即可,如@timer(unit="milliseconds")

这种方式使得timer装饰器可以根据不同的需求进行定制,比如计时单位的选择,甚至可以进一步扩展,加入更多的参数,如是否输出日志日志级别等,从而满足更复杂的应用场景。

根据自己的需要选择合适的实现方式,利用设计模式减少模版代码和代码的重复率

关键字:python 方法运行计时装饰模式实现

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: