"""
装饰器: 不改变原函数的调用方式和函数的前提下, 增加额外的功能, 其本质就是一个闭包 ---输出函数的运行时间
"""
import time
from functools import wraps def get_running_time(func): # 使用wraps, 保证被装饰过的函数__name__的属性不变
@wraps(func)
def inner(*args, **kwargs):
start_time = time.time()
res = func(*args, **kwargs)
end_time = time.time()
print('the {} running time is {}'.format(func.__name__, (end_time - start_time))) return res return inner @get_running_time
def run1000000():
lst = []
for i in range(1000000):
lst.append(i) return lst @get_running_time
def run1000000_2():
return [i for i in range(1000000)] run1000000()
run1000000_2() # 运行结果
# the run1000000 running time is 0.16900038719177246
# the run1000000_2 running time is 0.09100198745727539

最新文章

  1. 企业 SOA 设计(1)–ESB 设计
  2. Python 之作用域和名字空间
  3. tamper绕WAF详解
  4. css切背景图片(background-position)
  5. Eclipse设置注释模板
  6. CSS文字控制与文本控制
  7. Java最重要的21个技术点和知识点之JAVA基础
  8. servlet规范
  9. Finding Nemo(bfs)
  10. Hibernate写配置文件无提示信息解决
  11. Linux下设置SSH端口
  12. 【itchat】用Python玩耍微信
  13. 定义Sales_data类型
  14. 使用工具intellij idea 进行java web开发简介
  15. Spring再接触 生命周期
  16. 20165305 苏振龙《Java程序设计》第九周学习总结
  17. git学习——Git 基础要点【转】
  18. 内核态(Kernel Mode)与用户态(User Mode)
  19. 豆瓣电影api
  20. Jquery源码分析之匿名函数的自执行

热门文章

  1. mysql更改my.ini配置文件以后mysql服务无法启动
  2. LGP5992题解
  3. mysql or in union all 使用方法
  4. 从MyIE2平滑升级到Maxthon的完美方案
  5. turtle海龟库
  6. java案例—遍历字符串
  7. [SPDK/NVMe存储技术分析]009 - Introduction to RDMA Send | RDMA Send操作概论
  8. Linux安全加固手册
  9. 进制转换 Java day6
  10. J20航模遥控器开源项目系列教程(七)PPM输出 | 关于按键版本和旋转编码器版本的兼容说明、布局建议 | 关于MINI版PCB的兼容说明