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创建列表并给列表赋初始值的方法
Jul 28 Python
浅析Python编写函数装饰器
Mar 18 Python
python模拟Django框架实例
May 17 Python
python学生管理系统代码实现
Apr 05 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
python之生成多层json结构的实现
Feb 27 Python
python中tkinter窗口位置\坐标\大小等实现示例
Jul 09 Python
浅析Python 多行匹配模式
Jul 24 Python
Anaconda配置各版本Pytorch的实现
Aug 07 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按百分比生成缩略图的代码分享
2014/05/10 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
ES6 十大特性简介
2020/12/09 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
Python  连接字符串(join %)
2008/09/06 Python
Python中的集合类型知识讲解
2015/08/19 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
售后主管岗位职责
2013/12/08 职场文书
企业文化标语大全
2014/06/10 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
2014年技术员工作总结
2014/11/18 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
2016年元旦寄语
2015/08/17 职场文书
给校长的建议书范文
2015/09/14 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python