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实现堆栈与队列的方法
Jan 15 Python
Python连接mysql数据库的正确姿势
Feb 03 Python
Python实现自动登录百度空间的方法
Jun 10 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
对python多线程与global变量详解
Nov 09 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
基于python实现操作git过程代码解析
Jul 27 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 22 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中把有符号整型转换为无符号整型方法
2015/05/27 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
原生js实现分页效果
2020/09/23 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
python用字典统计单词或汉字词个数示例
2014/04/22 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
学习和使用python的13个理由
2019/07/30 Python
Django 拆分model和view的实现方法
2019/08/16 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
python 求10个数的平均数实例
2019/12/16 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
创建青年文明号材料
2014/05/09 职场文书
教师节活动总结
2014/08/29 职场文书
西柏坡导游词
2015/02/05 职场文书
民事起诉书范本
2015/05/19 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
总结Python常用的魔法方法
2021/05/25 Python