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 18 Python
python中OrderedDict的使用方法详解
May 05 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
Python将多个excel表格合并为一个表格
Feb 22 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
python如何将多个PDF进行合并
Aug 13 Python
python字符串替换re.sub()方法解析
Sep 18 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Django URL参数Template反向解析
Nov 24 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 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令牌 Token改进版
2008/07/18 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
JavaScript的public、private和privileged模式
2009/12/28 Javascript
Js 中debug方式
2010/02/07 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
Python语言的变量认识及操作方法
2018/02/11 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
使用pandas读取文件的实现
2019/07/31 Python
Python验证码截取识别代码实例
2020/05/16 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
幼儿园家长会欢迎词
2014/01/09 职场文书
优秀体育委员自荐书
2014/01/31 职场文书
岗位竞聘书范文
2014/03/31 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
Requests什么的通通爬不了的Python超强反爬虫方案!
2021/05/20 Python