Python 使用with上下文实现计时功能


Posted in Python onMarch 09, 2018

引言

with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用),从 2.6 版本开始缺省可用(参考 What's new in Python 2.6? 中 with 语句相关部分介绍)。with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。

在Python常常需要记录一段代码运行了多长时间,普通的一般用两个 time.time() ,然后计算差值;高级一点的,就是写一个计时装饰器,用装饰器包裹方法,记录运行时间,但这这意味着你的代码需要写在函数里,然后才能使用此计时装饰器。

今天我要介绍的是一种可以给一段代码计时,而不是一个函数计时的方便的、“高级的”的Python计时方法。

代码如下:

from contextlib import contextmanager
@contextmanager
def timer(name): 
 start = time.time()
 yield
 print(f'[{name}] done in {time.time() - start:.2f} s')

使用方法:

with timer('Test'): 
 i = 0
 while i < 1000000:
  i += 1

输出:

[Test] done in 0.11 s

从1加到1百万需要0.11s。可以在 timer 通过修改 .2f 来修改时间精度。

总结

以上所述是小编给大家介绍的Python 使用with上下文实现计时功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python中split方法用法分析
Apr 17 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
python实现归并排序算法
Nov 22 Python
python hough变换检测直线的实现方法
Jul 12 Python
django最快程序开发流程详解
Jul 19 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
Python3 Click模块的使用方法详解
Feb 12 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
你应该知道的Python3.6、3.7、3.8新特性小结
May 12 Python
浅析Python面向对象编程
Jul 10 Python
Python+unittest+DDT实现数据驱动测试
Nov 30 Python
python实现股票历史数据可视化分析案例
Jun 10 Python
TensorFlow搭建神经网络最佳实践
Mar 09 #Python
TensorFlow实现Batch Normalization
Mar 08 #Python
用Django实现一个可运行的区块链应用
Mar 08 #Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 #Python
TensorFlow模型保存和提取的方法
Mar 08 #Python
火车票抢票python代码公开揭秘!
Mar 08 #Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 #Python
You might like
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
python实现划词翻译
2020/04/23 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
python使用matplotlib画饼状图
2018/09/25 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
python程序如何进行保存
2020/07/03 Python
Django日志及中间件模块应用案例
2020/09/10 Python
Python pip 常用命令汇总
2020/10/19 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
药学专业大专生的自我评价
2013/12/12 职场文书
车贷收入证明范本
2014/09/14 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
奖学金感谢信
2015/01/21 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
进行数据处理的6个 Python 代码块分享
2022/04/06 Python