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里将list中元素依次向前移动一位
Sep 12 Python
深入讲解Python中面向对象编程的相关知识
May 25 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
python实现xlsx文件分析详解
Jan 02 Python
使用python画个小猪佩奇的示例代码
Jun 06 Python
Python实现识别图片内容的方法分析
Jul 11 Python
python 阶乘累加和的实例
Feb 01 Python
Django给admin添加Action的步骤详解
May 01 Python
详解Python 字符串相似性的几种度量方法
Aug 29 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
python3中的eval和exec的区别与联系
Oct 10 Python
python [:3] 实现提取数组中的数
Nov 27 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
第六节 访问属性和方法 [6]
2006/10/09 PHP
PHP开发中四种查询返回结果分析
2011/01/02 PHP
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
JavaScript创建表格的方法
2020/04/13 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
python实现在windows下操作word的方法
2015/04/28 Python
Python 文件管理实例详解
2015/11/10 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
Python正则表达式和元字符详解
2018/11/29 Python
详解【python】str与json类型转换
2019/04/29 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
小学体育教学反思
2014/01/31 职场文书
货车司机岗位职责
2014/03/18 职场文书
教师产假请假条范文
2014/04/10 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
2016年教师新年寄语
2015/08/18 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
Python天气语音播报小助手
2021/09/25 Python
深入理解go缓存库freecache的使用
2022/02/15 Golang