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实现的使用telnet登陆聊天室实例
Jun 17 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
python 全文检索引擎详解
Apr 25 Python
python笔记:mysql、redis操作方法
Jun 28 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
python实现矩阵打印
Mar 02 Python
简单分析python的类变量、实例变量
Aug 23 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
Django中的DateTimeField和DateField实现
Feb 24 Python
python垃圾回收机制原理分析
Apr 13 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匿名函数和use子句用法实例
2016/03/16 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
js不是基础的基础
2006/12/24 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
Python连接phoenix的方法示例
2017/09/29 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
python将list转为matrix的方法
2018/12/12 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
《母鸡》教学反思
2014/02/25 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
领导新年致辞2016
2015/07/29 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书