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检测lvs real server状态
Jan 22 Python
Python中的面向对象编程详解(上)
Apr 13 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Jul 04 Python
发布你的Python模块详解
Sep 15 Python
pandas数据预处理之dataframe的groupby操作方法
Apr 13 Python
浅析python中的迭代与迭代对象
Oct 08 Python
python实现邮件自动发送
Aug 10 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 Python
Python函数参数定义及传递方式解析
Jun 10 Python
python中round函数如何使用
Jun 19 Python
Python经典五人分鱼实例讲解
Jan 04 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 传值赋值与引用赋值的区别
2010/12/29 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
vue权限管理系统的实现代码
2019/01/17 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
python snownlp情感分析简易demo(分享)
2017/06/04 Python
python下载图片实现方法(超简单)
2017/07/21 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
Numpy数组的保存与读取方法
2018/04/04 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
基于python3的socket聊天编程
2020/02/17 Python
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
精彩的英文自荐信
2014/01/30 职场文书
大学生社会实践评语
2014/04/25 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
经营场所使用证明
2015/06/19 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书