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常用的日期时间处理方法示例
Feb 08 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
python pygame模块编写飞机大战
Nov 20 Python
使用Python横向合并excel文件的实例
Dec 11 Python
python cumsum函数的具体使用
Jul 29 Python
python将数组n等分的实例
Dec 02 Python
python实现银行实战系统
Feb 26 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 Python
使用OpenCV实现道路车辆计数的使用方法
Jul 15 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 Python
一文搞懂python异常处理、模块与包
Jun 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
PHP动态变静态原理
2006/11/25 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
php无限极分类实现方法分析
2019/07/04 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
JavaScript Date对象使用总结
2009/05/14 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
Windows下python2.7.8安装图文教程
2016/05/26 Python
python实现解数独程序代码
2017/04/12 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
Django权限设置及验证方式
2020/05/13 Python
Pycharm Git 设置方法
2020/09/15 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
造价工程师个人求职信
2013/09/21 职场文书
采购部部长岗位职责
2014/02/06 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
医师定期考核实施方案
2014/05/07 职场文书
关于倡议书的范文
2015/04/29 职场文书
防震减灾主题班会
2015/08/14 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers