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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
python删除过期log文件操作实例解析
Jan 31 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
pytorch numpy list类型之间的相互转换实例
Aug 18 Python
python实现大量图片重命名
Mar 23 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
如何在 Django 模板中输出 &quot;{{&quot;
Jan 24 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
python中提高pip install速度
Feb 14 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
Python自带的IDE在哪里
Jul 01 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 删除cookie方法详解
2014/12/01 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
javascript作用域和闭包使用详解
2014/04/25 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
python读取文件名称生成list的方法
2018/04/27 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
关于python写入文件自动换行的问题
2018/06/23 Python
在python中实现对list求和及求积
2018/11/14 Python
Python数学形态学实例分析
2019/09/06 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
外企C语言笔试题
2013/11/10 面试题
北京某公司的.net笔试题
2014/03/20 面试题
十佳大学生村官事迹
2014/01/09 职场文书
中药专业自荐信范文
2014/03/18 职场文书
优秀会计求职信
2014/07/04 职场文书
农村门前三包责任书
2014/07/25 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
2015元旦感言
2015/12/09 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL