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 相关文章推荐
web.py在模板中输出美元符号的方法
Aug 26 Python
Python匹配中文的正则表达式
May 11 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
python中的print()输出
Apr 12 Python
python自动化UI工具发送QQ消息的实例
Aug 27 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
Python通过getattr函数获取对象的属性值
Oct 16 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 split()函数的用法详解
2013/06/05 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python实现把数字转换成中文
2015/06/29 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
python 对象和json互相转换方法
2018/03/22 Python
python随机取list中的元素方法
2018/04/08 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
python要安装在哪个盘
2020/06/15 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
介绍一下write命令
2014/08/10 面试题
Linux文件系统类型
2012/09/16 面试题
幼师自我鉴定
2014/02/01 职场文书
小平小道观后感
2015/06/09 职场文书
行政处罚事先告知书
2015/07/01 职场文书