zoukankan      html  css  js  c++  java
  • python clock装饰器 计算函数执行时间,执行结果及传入的参数

    import time
    import functools
    
    def clock(func):
        @functools.wraps(func)#还原被装饰函数的__name__和__doc__属性
        def clocked(*args,**kwargs):#支持关键字参数
            t0 = time.perf_counter()
            result = func(*args,**kwargs)
            elapsed = time.perf_counter()- t0
            name = func.__name__
            arg_lst = []
            if args:
                arg_lst.append(','.join(repr(arg) for arg in args))
            if kwargs:
                pairs = ['%s = %r' % (k,w) for k,w in sorted(kwargs.items())]
                arg_lst.append(','.join(pairs))
            arg_str = ','.join(arg_lst)
            print('[%0.8fs]%s(%s) -> %r' % (elapsed,name,arg_str,result))
            return result
        return clocked
    
    
    @clock
    def snooze(seconds):
        time.sleep(seconds)
    
    @clock
    def factorial(n):
        return 1 if n<2 else n * factorial(n-1)
    
    if __name__ == '__main__':
        print('*'*40,'Calling snooze(.123)')
        snooze(.123)
        print('*'*40,'Calling factorial(6)')
        print('6! =',factorial(6))

  • 相关阅读:
    1044 拦截导弹
    3060 抓住那头奶牛 USACO
    2727:仙岛求药(广搜)
    4906 删数问题(另一种贪心思路)
    1004 四子连棋
    1005 生日礼物
    1031 质数环
    1008 选数
    1073 家族
    2801 LOL-盖伦的蹲草计划
  • 原文地址:https://www.cnblogs.com/Erick-L/p/8329181.html
Copyright © 2011-2022 走看看