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去除文件中空格、Tab及回车的方法
Apr 12 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
浅谈Python大神都是这样处理XML文件的
May 31 Python
python实现超市管理系统(后台管理)
Oct 25 Python
python redis 批量设置过期key过程解析
Nov 26 Python
Python面向对象之私有属性和私有方法应用案例分析
Dec 31 Python
Python列表切片常用操作实例解析
Mar 10 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
Apr 19 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
Jul 03 Python
如何在vscode中安装python库的方法步骤
Jan 06 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结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
初学Javascript的一些总结
2008/11/03 Javascript
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python 创建子进程模块subprocess详解
2015/04/08 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
Python下的twisted框架入门指引
2015/04/15 Python
Python3匿名函数用法示例
2018/07/25 Python
python super的使用方法及实例详解
2019/09/25 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
python数值基础知识浅析
2019/11/19 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
大四学生找工作的自荐信
2014/03/27 职场文书
体育之星事迹材料
2014/05/11 职场文书
档案工作汇报材料
2014/08/21 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
合作协议书格式范本
2016/03/21 职场文书
Tomcat用户管理的优化配置详解
2022/03/31 Servers
Redis分布式锁的7种实现
2022/04/01 Redis
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers