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切片用法实例教程
Sep 08 Python
Python的gevent框架的入门教程
Apr 29 Python
python导出hive数据表的schema实例代码
Jan 22 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
python smtplib发送带附件邮件小程序
May 22 Python
python实现简单tftp(基于udp协议)
Jul 30 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
python实现烟花小程序
Jan 30 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
python 基于wx实现音乐播放
Nov 24 Python
python中time包实例详解
Feb 02 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
php生成随机数或者字符串的代码
2008/09/05 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
PHP模块化安装教程
2016/06/01 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
Python callable内置函数原理解析
2020/03/05 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
python 绘制正态曲线的示例
2020/09/24 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
授权委托书范本(单位)
2014/09/28 职场文书
院系推荐意见
2015/06/05 职场文书
2016年党建工作简报
2015/11/26 职场文书
高中信息技术教学反思
2016/02/16 职场文书