协慌网

登录 贡献 社区

我如何获得 Python 程序的执行时间?

我在 Python 中有一个命令行程序需要一段时间才能完成。我想知道完成跑步所需的确切时间。

我看过timeit模块,但它似乎只适用于小代码片段。我想要整个计划的时间。

答案

Python 中最简单的方法:

import time
start_time = time.time()
main()
print("--- %s seconds ---" % (time.time() - start_time))

这假定您的程序至少需要十分之一秒才能运行。

打印:

--- 0.764891862869 seconds ---

我把这个timing.py模块放到我自己的site-packages目录中,然后在我的模块顶部插入import timing

import atexit
from time import clock

def secondsToStr(t):
    return "%d:%02d:%02d.%03d" % \
        reduce(lambda ll,b : divmod(ll[0],b) + ll[1:],
            [(t*1000,),1000,60,60])

line = "="*40
def log(s, elapsed=None):
    print line
    print secondsToStr(clock()), '-', s
    if elapsed:
        print "Elapsed time:", elapsed
    print line
    print

def endlog():
    end = clock()
    elapsed = end-start
    log("End Program", secondsToStr(elapsed))

def now():
    return secondsToStr(clock())

start = clock()
atexit.register(endlog)
log("Start Program")

如果我想要显示的程序中有重要的阶段,我也可以从我的程序中调用timing.log 。但仅包括import timing将打印开始和结束时间以及总体经过时间。 (原谅我不起眼的secondsToStr函数,它只是将浮点数秒格式化为 hh:mm:ss.sss 形式。)

注意:可以在此处此处找到上述代码的 Python 3 版本。

在 Linux 或 UNIX 中:

time python yourprogram.py

在 Windows 中,请参阅此 Stackoverflow 讨论: 如何在 windows 命令行中测量命令的执行时间?