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实现ipsec开权限实例
Nov 11 Python
一波神奇的Python语句、函数与方法的使用技巧总结
Dec 08 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
python使用Flask操作mysql实现登录功能
May 14 Python
python实现矩阵打印
Mar 02 Python
python实现键盘输入的实操方法
Jul 16 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
Python基于paramunittest模块实现excl参数化
Apr 26 Python
python进度条显示之tqmd模块
Aug 22 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 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
杏林同学录(一)
2006/10/09 PHP
非常不错的MySQL优化的8条经验
2008/03/24 PHP
linux下编译安装memcached服务
2014/08/03 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
简单了解Python中的几种函数
2017/11/03 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
Python netmiko模块的使用
2020/02/14 Python
css3中transition属性详解
2014/09/02 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
啤酒节策划方案
2014/05/28 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
简历自我评价范文
2019/04/24 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书