Python装饰器(python计算函数运行花费时间)

本文介绍如何使用Python装饰器计算函数运行时间,包括基本装饰器的实现、带参数的装饰器及异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python装饰器(计算函数运行花费时间)

    python的装饰器和java的面向切面变成很相似,面向切面编程主要关心的是函数运行前(Before)和函数运行结束(After),可以针对函数前后做功能修复、功能插入工作,比如一些通用的打印日志,计算函数运行时间,拦截函数做一些事前处理, 相比而言python的装饰器更加灵活好用。

  1. 现在想要比较两个功能相同函数的性能,计算函数的运行时间

    def parse_m3u8_file(m3u8_uri)pass
    	# Before: 运行开始时间
        # Running: 函数体运行中
        # After:   运行结束时间
        # 计算函数运行时间差并输出
    

        完成这个功能,需要改写每个函数的函数体,并向上述描述添加重复代码,冗余而又乏味;有没有一种操作可以不用触及函数体的改动(或者微小改动)?装饰器可以优雅的完成这一功能。

    import time
    
    def timefn1(fn):
        '''
        :param fn: 被装饰器修饰的函数,将作为装饰器的默认参数传入
        :return: 被装饰的函数本身 
        '''
        def measure_use_time(*args, **kw):
            '''
            函数传参方式 fn(arg1, arg2, param1=a, param2=b)
            :param args: 位置参数(arg1, arg2, ....)  传参方式 fn(arg1, arg2, ...)
            :param kw: 字典参数{param1=a, param2=b, .....} 传参方式 fn(param1=a, param2=b, ....)
            :return: 
            '''
            t1 = time.time()
            res = fn(*args, **kw)
            t2 = time.time()
            print("@timefn: %s took %s" % (fn.__name__, t2-t1)
            return res
        return measure_use_time
    
    # 函数的定义上加@timefn1即可输出函数运行时间
    '''
    	形如:
    	@timefn1
    	def parse_m3u8_file(m3u8_uri):
    		pass
    '''
            
    
  2. 功能函数介绍:这个函数是对m3u8文件进行解析,提取其中的ts视频片段链接:

    文件部分内容( 本文解析的m3u8文件附件):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值