Python执行时间的计算方法小结


Posted in Python onMarch 17, 2017

首先说一下我遇到的坑,生产上遇到的问题,我调度Python脚本执行并监控这个进程,python脚本运行时间远远大于python脚本中自己统计的程序执行时间。

监控python脚本执行的时间是36个小时,而python脚本中统计自己执行的时间是4个小时左右。

问题暴漏之后首先想到的是Linux出了问题,查找各种日志未发现有何异常。

然后是想到python中用到的py2neo的写数据异步,阻塞进程执行。

最后,终于找到问题的所在:python脚本使用统计时间的方式是time.clock(),而这种方式统计的是CPU的执行时间,不是程序的执行时间。

接下来,就几种python的统计时间方式对比一下:

方法1:

import datetime
starttime = datetime.datetime.now()
#long running
#do something other
endtime = datetime.datetime.now()
print (endtime - starttime).seconds

datetime.datetime.now()获取的是当前日期,在程序执行结束之后,这个方式获得的时间值为程序执行的时间。

方法2:

start = time.time()
#long running
#do something other
end = time.time()
print end-start

time.time()获取自纪元以来的当前时间(以秒为单位)。如果系统时钟提供它们,则可能存在秒的分数。所以这个地方返回的是一个浮点型类型。这里获取的也是程序的执行时间。

方法3:

start = time.clock()
#long running
#do something other
end = time.clock()
print end-start

time.clock()返回程序开始或第一次被调用clock()以来的CPU时间。 这具有与系统记录一样多的精度。返回的也是一个浮点类型。这里获得的是CPU的执行时间。

注:程序执行时间=cpu时间 + io时间 + 休眠或者等待时间

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python 查找文件夹下所有文件 实现代码
Jul 01 Python
python实现根据月份和日期得到星座的方法
Mar 27 Python
详细探究Python中的字典容器
Apr 14 Python
Python的Flask框架中实现简单的登录功能的教程
Apr 20 Python
Django自定义分页与bootstrap分页结合
Feb 22 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
Python爬虫学习之获取指定网页源码
Jul 30 Python
使用python模拟命令行终端的示例
Aug 13 Python
python异步编程 使用yield from过程解析
Sep 25 Python
python绘制随机网络图形示例
Nov 21 Python
基于python实现上传文件到OSS代码实例
May 09 Python
浅析python中的del用法
Sep 02 Python
python django事务transaction源码分析详解
Mar 17 #Python
Python自动生产表情包
Mar 17 #Python
Python实现的异步代理爬虫及代理池
Mar 17 #Python
Python 专题一 函数的基础知识
Mar 16 #Python
python 专题九 Mysql数据库编程基础知识
Mar 16 #Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 #Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 #Python
You might like
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
ThinkPHP安装和设置
2015/07/27 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
Python线程创建和终止实例代码
2018/01/20 Python
python如何修改装饰器中参数
2018/03/20 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
模具设计与制造专业应届生求职信
2013/10/18 职场文书
大学生收银员求职信分享
2014/01/02 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
私人委托书格式
2014/09/10 职场文书
客房领班岗位职责
2015/02/11 职场文书
会议主持词通用版
2019/04/02 职场文书
mysql优化
2021/04/06 MySQL
vue实现锚点定位功能
2021/06/29 Vue.js
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL