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中的filter和lambda函数的使用
Apr 07 Python
在Python中操作字符串之startswith()方法的使用
May 20 Python
python实现自动重启本程序的方法
Jul 09 Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
python矩阵的转置和逆转实例
Dec 12 Python
如何用C代码给Python写扩展库(Cython)
May 17 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
django为Form生成的label标签添加class方式
May 20 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
第七节--类的静态成员
2006/11/16 PHP
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
PHP统计二维数组元素个数的方法
2013/11/12 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
php实现websocket实时消息推送
2018/03/30 PHP
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
nodejs基础应用
2017/02/03 NodeJs
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
js闭包学习心得总结
2018/04/17 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python三元运算实现方法
2015/01/12 Python
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
关爱老人标语
2014/06/21 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
初婚初育证明范本
2014/11/24 职场文书
优秀班组事迹材料
2014/12/24 职场文书
公司内部升职自荐信
2015/03/27 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle