python如何统计代码运行的时长


Posted in Python onJuly 24, 2019

1. 背景

有时候,需要统计一段代码运行所用的时长,则可以用到下面的代码。

2. 代码示例

#!/usr/bin/env python
 
import datetime
import time
 
start_time = datetime.datetime.now()
time.sleep(5)
end_time = datetime.datetime.now()
delta = end_time - start_time
delta_gmtime = time.gmtime(delta.total_seconds())
duration_str = time.strftime("%H:%M:%S", delta_gmtime)
 
print "start time:", start_time
print "end time:", end_time
print "delta_gmtime:", delta_gmtime
print "duration:", duration_str

运行效果:

flying-bird@flyingbird:~/examples/python/time_test$ ./time_test.py 
start time: 2015-06-09 20:11:47.437286
end time: 2015-06-09 20:11:52.440018
delta_gmtime: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=5, tm_wday=3, tm_yday=1, tm_isdst=0)
duration: 00:00:05
flying-bird@flyingbird:~/examples/python/time_test$

3. 进一步优化

在上面的例子中,还是涉及到一些datetime细节。为此,可以进一步封装。如下:

import datetime
import time
 
class TimeDuration(object):
  'Time duration.'
  
  def __init__(self):
    pass
    
  def start(self):
    self.start_time = datetime.datetime.now()
    self.end_time = None
    
  def stop(self):
    if self.start_time is None:
      print "ERROR: start() must be called before stop()."
      return
      
    self.end_time = datetime.datetime.now()
    
  def getDurationStr(self):
    'String of duration with the format "%H:%M:%S".'
    if self.start_time is None or self.end_time is None:
      print "ERROR: start() and stop() must be called first.";
      return
    
    delta = self.end_time - self.start_time
    delta_gmtime = time.gmtime(delta.total_seconds())
    return time.strftime("%H:%M:%S", delta_gmtime)

调用示例:

flying-bird@flyingbird:~/examples/python/time_test$ cat time_test2.py
#!/usr/bin/env python
 
import time
import time_utils
 
duration = time_utils.TimeDuration()
duration.start()
time.sleep(5)
duration.stop()
 
print duration.getDurationStr() 
flying-bird@flyingbird:~/examples/python/time_test$ ./time_test2.py
00:00:05
flying-bird@flyingbird:~/examples/python/time_test$

4. 小结

把一些不熟悉的python细节封装起来,以后调用起来就会简化很多。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python科学计算之NumPy入门教程
Jan 15 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
Pipenv一键搭建python虚拟环境的方法
May 22 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
Jan 24 Python
详解Python做一个名片管理系统
Mar 14 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
Python如何使用OS模块调用cmd
Feb 27 Python
python numpy库np.percentile用法说明
Jun 08 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
理解深度学习之深度学习简介
Apr 14 Python
Django时区详解
Jul 24 #Python
详解Django定时任务模块设计与实践
Jul 24 #Python
Python3中urlencode和urldecode的用法详解
Jul 23 #Python
对python3中的RE(正则表达式)-详细总结
Jul 23 #Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 #Python
python使用百度文字识别功能方法详解
Jul 23 #Python
Python使用type关键字创建类步骤详解
Jul 23 #Python
You might like
PHP APC的安装与使用详解
2013/06/13 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
深入理解Node module模块
2018/03/26 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
vue实现评论列表功能
2019/10/25 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
ES6 十大特性简介
2020/12/09 Javascript
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
详解python3中的真值测试
2018/08/13 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
Python语法分析之字符串格式化
2019/06/13 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
python保留小数位的三种实现方法
2020/01/07 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
如何提高python 中for循环的效率
2020/04/15 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
python如何进入交互模式
2020/07/06 Python
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
体现团队精神的口号
2014/06/06 职场文书
安全标兵事迹材料
2014/08/17 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
安全教育第一课观后感
2015/06/17 职场文书
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技