Python中统计程序执行时间与CPU时间的区别及计算方法

山海之间
山海之间
发布时间:2026-10-14 | 5人浏览过
原创

本文解析Python中统计执行时间的常见误区,指出time.clock()仅统计CPU时间而非实际程序耗时。通过对比datetime.datetime.now()、time.time()和time.clock()三种方法,说明如何准确获取包含IO和等待时间的真实程序执行时间,帮助开发者避免生产环境中的监控偏差。

生产环境中的时间统计误区

在生产环境中,曾遇到一个令人困惑的现象:通过外部调度系统监控Python脚本的运行时间,发现其数值远大于脚本内部自行统计的执行时间。

具体案例中,外部监控显示脚本执行耗时36小时,而脚本内部记录的时间仅为4小时左右。排查Linux系统日志后,未发现任何异常,问题依然悬而未决。

初步排查方向指向Python中使用的py2neo库,怀疑其数据写入采用异步机制导致进程阻塞,但这并非根本原因。

最终定位到问题根源:脚本内部使用time.clock()来统计时间。该函数统计的是CPU执行时间,而非程序从开始到结束的总耗时,这解释了监控时间与内部统计的巨大差异。

Python统计时间的三种方法对比

为了准确统计程序执行时间,以下对几种常见的Python时间统计方法进行对比分析。

方法一:datetime模块

方法一:使用datetime模块。


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

通过datetime.datetime.now()获取当前日期和时间。在程序执行前后分别调用该方法,计算两者的差值,即可得到程序的实际执行时间。

方法二:time.time()函数

方法二:使用time模块的time函数。


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

time.time()返回自Unix纪元以来的当前时间,单位为秒。若系统时钟支持,返回值包含小数部分,类型为浮点数。该方法同样用于计算程序的实际执行时间。

方法三:time.clock()与CPU时间

方法三:使用time模块的clock函数。


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

time.clock()返回程序开始或首次调用clock()以来的CPU时间,精度与系统记录一致,返回值也为浮点数。需要注意的是,程序执行时间等于CPU时间加上IO时间、休眠或等待时间。因此,time.clock()仅反映CPU占用情况,不能代表完整的程序耗时。

以上介绍了Python中几种计算执行时间的方法及其区别。更多相关技术细节,建议参考本站其他关于Python性能优化的文章。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表