Python 函数运行时间计时器

def timer(func):
    """
    函数运行时间计时器
    :param func: function
    :return: as same as function(param)'s return
    """
    from functools import wraps  # 对函数的装饰器
    # 使用@wraps时可以保证装饰器修饰的函数的name的值保持不变(适配多线程)
    @wraps(func)
    def decorator(*args, **kwargs):
        import time
        print('[{_func_name_}] --> start'.format(_func_name_=func.__name__))
        start_time = time.time()
        ret = func(*args, **kwargs)
        end_time = time.time()
        interval = end_time - start_time
        if interval >= 1:
            # 耗时大于等于1s时 输出结果以秒为单位
            print('[{_func_name_}] --> {_duration_:.2f}s'
                  .format(_func_name_=func.__name__, _duration_=interval))
        else:
            # 耗时小于1s时 输出结果以毫秒为单位
            print('[{_func_name_}] --> {_duration_:.2f}ms'
                  .format(_func_name_=func.__name__, _duration_=(interval*1000)))
        return ret
    return decorator
 
 
# TEST
if __name__ == '__main__':
    @timer
    def test():
        pass
 
    test()
 
# >>>[test] --> start
# >>>[test] --> 0.00ms

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值