问题:
运行代码时,尤其对于大型项目需要分析每个环节方法耗时的。每个方法前后都写计算耗时及日志打印太繁琐了,而且代码不精简。

解决:
Python装饰器类似于Spring的 AOP(Aspect Oriented Programing)面向切面的编程,在方法前后分别拦截,进行一些日志记录操作,该方法稍有改动,进行了方法耗时的打印。

使用:
只需要在每个方法上边用:@log_execution_time 注释即可实现;

# 日志耗时装饰器
import time
import functools# 日志耗时装饰器
def log_execution_time(func):@functools.wraps(func)def wrapper(*args, **kwargs):start = time.perf_counter()res = func(*args, **kwargs)end = time.perf_counter()print('【%s】 took %.2f s' % (func.__name__, (end - start)))return resreturn wrapper@log_execution_time
def calculate_similarity(items):print('')calculate_similarity(1)

结果如下

【calculate_similarity】 took 0.00 s

Python装饰器的神奇功能:自动打印每个方法耗时相关推荐

  1. python装饰器作用和功能_Python装饰器原理与用法分析

    这篇文章主要介绍了Python装饰器原理与用法,结合实例形式分析了Python装饰器的概念.原理.使用方法及相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python装饰器原理与用法.分享给大 ...

  2. python装饰器作用和功能_这是我见过最全面的Python装饰器详解!没有学不会这种说法!...

    今天的任务比较繁重,因为我们要一起来学习Python中比较重要比较牛逼比较难的装饰器. 我将会和大家一起通过代码的形式来迷你银行存款取款的功能,然后通过引入装饰器来一步一步优化代码. 废话不多说梦开始 ...

  3. python装饰器作用和功能_python装饰器大详解

    一.作用域 在python中,作用域分为两种:全局作用域和局部作用域. 全局作用域是定义在文件级别的变量,函数名.而局部作用域,则是定义函数内部. 关于作用域,我们要理解两点: a.在全局不能访问到局 ...

  4. python装饰器原理-Python装饰器原理与用法分析

    这篇文章主要介绍了Python装饰器原理与用法,结合实例形式分析了Python装饰器的概念.原理.使用方法及相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python装饰器原理与用法.分享给大 ...

  5. Python装饰器是什么?使用Python装饰器实现计算程序(函数)运行时间的功能

    Python装饰器是什么?使用Python装饰器实现计算程序(函数)运行时间的功能 目录

  6. python 装饰器实现事件绑定_Python装饰器实现几类验证功能做法实例

    最近新需求来了,要给系统增加几个资源权限.尽量减少代码的改动和程序的复杂程度.所以还是使用装饰器比较科学 之前用了一些登录验证的现成装饰器模块.然后仿写一些用户管理部分的权限装饰器. 比如下面这种 调 ...

  7. python中self_一个例子带你入门Python装饰器

    ============ 欢迎关注我的公众号:早起python ============ 前言 在还未正式发布的python3.9中,有一个新功能值得关注,那就是任意表达式可以作为装饰器,如果你还不知 ...

  8. [转]python 装饰器

    以前你有没有这样一段经历:很久之前你写过一个函数,现在你突然有了个想法就是你想看看,以前那个函数在你数据集上的运行时间是多少,这时候你可以修改之前代码为它加上计时的功能,但是这样的话是不是还要大体读读 ...

  9. python装饰器作用-python 装饰器

    以前你有没有这样一段经历:很久之前你写过一个函数,现在你突然有了个想法就是你想看看,以前那个函数在你数据集上的运行时间是多少,这时候你可以修改之前代码为它加上计时的功能,但是这样的话是不是还要大体读读 ...

最新文章

  1. Maven -- 使用Myeclipse创建Maven项目
  2. 随行付微服务测试之静态代码扫描
  3. Kinect学习(二):学习资源整理(转)
  4. C#反射使用方法过程及步骤
  5. 阿里巴巴发布智能运维故障管理AI+生态计划
  6. 安装tron_具有Tron效果的JavaFX 2 Form
  7. 使用Jackson和Super类型令牌进行Json反序列化
  8. “编程能力差,90%输在了数学上!”骨灰级开发:其实你们都是瞎努力!!
  9. Python开发工程师常用开发工具
  10. 在JavaScript中使用JSON
  11. 图论,回路,旅行商、邮递员问题。
  12. 微信小程序里实现自定义日期控件
  13. 元宇宙构建基石:三维重建技术
  14. 机器学习笔记 - Moore-Penrose 伪逆
  15. 记录:英文参考文献格式
  16. 迅雷该怎么把区块链这件事做好?
  17. 信号的扩展是因果_信号与系统 怎么判断e(1-t)的时不变和因果性?
  18. 解压jar包修改配置文件,解压、修改、压缩、运行
  19. Outlook2019关联163邮箱
  20. 逻辑回归-鸢尾花数据集

热门文章

  1. web站点的欢迎页面
  2. Android include 标签使用
  3. git生成ssh keys步骤与使用
  4. html 样式的几种实现方法
  5. 完美解决Error:Execution failed for task ':APP:transformClassesWithDexForDebug'...问题
  6. CCF CSP 201609-2 火车购票
  7. Android 基础 一 AndroidManifest.xml
  8. Laravel安装后没有vendor文件夹
  9. Bootstrap 栅格系统 理解与总结
  10. java签名算法阻止 设置_java数字签名算法之RSA