5

有没有一种简单的方法来计算 Python 程序的执行时间?

澄清:整个程序

4

5 回答 5

8

使用timeit

该模块提供了一种简单的方法来计时少量 Python 代码。它既有命令行也有可调用的接口。它避免了一些用于测量执行时间的常见陷阱。

你需要一个字符串中的python语句;如果你的代码中有一个 main 函数,你可以像这样使用它:

>>> from timeit import Timer
>>> timer = Timer('main()', 'from yourmodule import main')
>>> print timer.timeit()

第二个字符串提供设置,即要计时的第一条语句的环境。第二部分没有计时,旨在按原样设置阶段。然后第一根弦穿过它的步伐;默认情况下为一百万次,以获得准确的时间。

如果您需要有关速度慢的地方的更多详细信息,请使用以下之一python profilers

分析器是描述程序运行时性能的程序,提供各种统计信息。

运行它的最简单方法是使用cProfile命令行中的模块:

$ python -m cProfile yourprogram.py
于 2012-06-04T14:55:54.887 回答
5

如果您在 Linux/Unix/POSIX 兼容平台上,只需使用time. 这样您就不会干扰您的脚本,也不会因为不必要的详细(对您)分析而减慢它的速度。自然,您可以将它用于几乎任何东西,而不仅仅是 Python 脚本。

于 2012-06-04T15:13:52.763 回答
5

您可能想要使用内置分析器

此外,您可能希望使用以下简单的装饰器来测量函数的运行时间:

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 
于 2012-06-04T14:59:46.273 回答
2

对于片段,请使用该timeit模块。

对于整个程序,请使用该 cProfile模块。

于 2012-06-04T14:55:50.667 回答
2

使用时间

>>> 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  
于 2012-06-04T14:58:39.963 回答