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 代码性能优化技巧分享
Aug 07 Python
用Python创建声明性迷你语言的教程
Apr 13 Python
python实现基本进制转换的方法
Jul 11 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
python 对象和json互相转换方法
Mar 22 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
Pycharm更换python解释器的方法
Oct 29 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
Numpy之reshape()使用详解
Dec 26 Python
对python中arange()和linspace()的区别说明
May 03 Python
用Python将库打包发布到pypi
Apr 13 Python
只用40行Python代码就能写出pdf转word小工具
May 31 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
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python 输出所有大小写字母的方法
2019/01/02 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
python exit出错原因整理
2020/08/31 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
初中班主任经验交流材料
2014/05/16 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
python 模块重载的五种方法
2021/04/24 Python
MySQL快速插入一亿测试数据
2021/06/23 MySQL
apache ftpserver搭建ftp服务器
2022/05/20 Servers
JavaScript前端面试组合函数
2022/06/21 Javascript