有没有一种简单的方法来计算Python程序的执行时间?
澄清:整个程序
澄清:整个程序
使用 timeit
:
这个模块提供了一种简单的方法来计时小段 Python 代码。它既有命令行界面,也有可调用接口。它避免了许多常见的测量执行时间的陷阱。
您需要在字符串中使用一个 Python 语句;如果您的代码中有一个主函数,您可以像这样使用它:
>>> from timeit import Timer
>>> timer = Timer('main()', 'from yourmodule import main')
>>> print timer.timeit()
python profilers
:。分析器是描述程序运行时性能并提供各种统计信息的程序。通过使用命令行中的cProfile
模块,最简单的方法是运行此操作:$ python -m cProfile yourprogram.py
如果你使用的是Linux/Unix/POSIX兼容平台,只要使用time
即可。这样做不会干扰你的脚本,也不会因为过于详细(对你来说)的剖析而拖慢它的速度。当然,你可以用它来做任何事情,不仅限于Python脚本。
您可能想要使用内置的分析器。
另外,您可能希望通过使用以下简单的装饰器来测量函数的运行时间:
import time
def myprof(func):
def wrapping_fun(*args):
start = time.clock()
result = func(*args)
end = time.clock()
print 'Run time of %s is %4.2fs' % (func.__name__, (end - start))
return result
return wrapping_fun
使用方法:
@myprof
def myfun():
# function body
time.clock
不是所有平台上最精确的时钟(请参见由timetit
定义的default_clock()
),而且输出非常有限(与程序输出交织在一起,需要手动收集和解析)。小问题包括不考虑异常和不使用functools.wrap
。 - user395760>>> import timeit
>>> t = timeit.Timer(stmt="lst = ['c'] * 100")
>>> print t.timeit()
1.10580182076
>>> t = timeit.Timer(stmt="lst = ['c' for x in xrange(100)]")
>>> print t.timeit()
7.66900897026
timeit
用于微基准测试:小程序片段,而不是整个程序。 - user395760timeit
方法)。但现在您的答案已被接受,所以这有点无关紧要。 - user395760