测量功能的时间执行

时间:2013-06-04 15:44:58

标签: python

衡量时间执行功能的最佳(精确)方法是什么,例如:

def some_function():
    # ...

我更喜欢将此功能调用1000次然后计算平均时间,如下所示:

start = time.time()

for i in range(1000):
    some_function()

elapsed = (time.time() - start)/1000

但也许有更好的方法?

2 个答案:

答案 0 :(得分:4)

我应该使用timeit模块

import timeit
t = timeit.Timer('some_function(*args)', # code to run
                 'from __main__ import some_function, args') # initial code 
                                               #run before time measurement
t.timeit(100) # times to run

答案 1 :(得分:1)

我同意timeit是在Python源上运行本机计时的事实上的“模块”。但是,如果您有兴趣在分析方面做一些繁重的工作,您可能会发现像runsnakerun这样有用的东西(Python原生的探查器的可视化工具)。

来自runsnakerun的片段(它实际上只使用来自pythons探测器的数据):

  

原始配置文件信息的可排序数据网格视图

     

identity:函数名,文件名,目录名

     

耗费时间:累计,累计,每次,本地和本地

     

整体数据网格视图

     

(所有)此函数的调用者,(所有)此函数的callees

只是为了添加是的,我知道'主义......你问了一些简单的东西,这是最重要的。但是,我想我会分享另一种可能的解决方案,以防您需要更多信息。如果你觉得它没用,也许其他人会这样做!

要获取将在runsnakerun中运行的输出配置文件,请执行以下操作:

$ python -m cProfile -o <outputfilename> <script-name> <options>

或者,如果您使用* nix进行开发,则可以使用time,但现在您已经增加了开销,并且可能会丢失Python模块 timeit 可能提供的精度。

不同的需求需要不同的解决方案 - 只需添加你的行李即用。

HTH