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模拟新浪微博登陆功能(新浪微博爬虫)
Dec 24 Python
python实现html转ubb代码(html2ubb)
Jul 03 Python
Python实现图像几何变换
Jul 06 Python
Python网络编程中urllib2模块的用法总结
Jul 12 Python
Python扩展内置类型详解
Mar 26 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
快速排序的四种python实现(推荐)
Apr 03 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
python圣诞树编写实例详解
Feb 13 Python
Docker如何部署Python项目的实现详解
Oct 26 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
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
Javascript模板技术
2007/04/27 Javascript
Javascript模块模式分析
2008/05/16 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
python简单商城购物车实例代码
2018/03/15 Python
pandas对指定列进行填充的方法
2018/04/11 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
经理职责范文
2013/11/08 职场文书
模具数控专业自荐信
2014/01/27 职场文书
售后求职信范文
2014/03/15 职场文书
保护环境建议书300字
2014/05/13 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
Python制作表白爱心合集
2022/01/22 Python