程序执行时间-装饰器

import time
from functools import wraps

def fn_timer(function):
    @wraps(function)
    def function_timer(*args, **kwargs):
        t0 = time.time()
        result = function(*args, **kwargs)
        t1 = time.time()
        print ("Total time running %s: %s seconds" %
                (function.func_name, str(t1-t0))
                )
        return result
    return function_timer


@fn_timer
def random_sort(n):
    return sorted([random.random() for i in range(n)])
 
if __name__ == "__main__":
    random_sort(2000000)

因为返回的那个wrapper()函数名字就是'wrapper',所以,需要把原始函数的name等属性复制到wrapper()函数中,否则,有些依赖函数签名的代码执行就会出错。

不需要编写wrapper.name = func.name这样的代码,Python内置的functools.wraps就是干这个事的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Python进阶框架 希望大家喜欢,点赞哦首先感谢廖雪峰老师对于该课程的讲解 一、函数式编程 1.1 函数式编程简...
    Gaolex阅读 10,983评论 6 53
  • 装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返...
    时间之友阅读 6,893评论 0 3
  • 日本悬疑作家东野圭吾的一部著作,本作可以说不是严格的悬疑推理小说,但也正正因为将亲情,穿越,幻想与悬疑结合,读起来...
    六一阅读 3,408评论 0 0
  • 材质决定了物体是否透明颜色等 three.js 中涉及的主要几种材质 MeshBasicMaterialcolor...
    shirleyR阅读 5,437评论 0 0
  • 刚停下夜跑的脚步,黄姑娘打来电话:“亲爱的,吃饭了吗?看我的螺蛳粉,真怀念我们在广西的时候吃的各种粉。”接着微信图...
    向行阅读 3,544评论 10 8

友情链接更多精彩内容