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解析中国天气网的天气数据
Mar 21 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
Python实现的多线程http压力测试代码
Feb 08 Python
Django的分页器实例(paginator)
Dec 01 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python对多属性的重复数据去重实例
Apr 18 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
Python小程序之在图片上加入数字的代码
Nov 26 Python
python制作微博图片爬取工具
Jan 16 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 缓存实现代码及详细注释
2010/05/16 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
php中序列化与反序列化详解
2017/02/13 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
估算杭州有多少软件工程师
2015/08/11 面试题
教师专业自荐书范文
2014/02/10 职场文书
教师节慰问信
2015/02/15 职场文书
北大自主招生自荐信
2015/03/04 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电