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的pdb调试命令的命令整理及实例
Jul 12 Python
python 设置文件编码格式的实现方法
Dec 21 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
Python hashlib模块实例使用详解
Dec 24 Python
python实现替换word中的关键文字(使用通配符)
Feb 13 Python
解决Keras 中加入lambda层无法正常载入模型问题
Jun 16 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
Python执行时间的几种计算方法
Jul 31 Python
python实现代码审查自动回复消息
Feb 01 Python
Python用SSH连接到网络设备
Feb 18 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
杏林同学录(一)
2006/10/09 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
javascript动态加载三
2012/08/22 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
JS中Location使用详解
2015/05/12 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
玩转python爬虫之正则表达式
2016/02/17 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
计算机专业应届毕业生自荐信
2013/09/26 职场文书
会计实习生工作总结的自我评价
2013/10/07 职场文书
数学系个人求职信范文
2014/01/30 职场文书
抽样调查项目计划书
2014/04/24 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android