衡量时间执行功能的最佳(精确)方法是什么,例如:
def some_function():
# ...
我更喜欢将此功能调用1000次然后计算平均时间,如下所示:
start = time.time()
for i in range(1000):
some_function()
elapsed = (time.time() - start)/1000
但也许有更好的方法?
答案 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