什么是最好的(准确)的方式来衡量的功能时执行,例如:测量时间执行
def some_function():
# ...
我宁愿调用此函数1000次,然后计算平均时间,是这样的:
start = time.time()
for i in range(1000):
some_function()
elapsed = (time.time() - start)/1000
但也许有更好的办法吗?
什么是最好的(准确)的方式来衡量的功能时执行,例如:测量时间执行
def some_function():
# ...
我宁愿调用此函数1000次,然后计算平均时间,是这样的:
start = time.time()
for i in range(1000):
some_function()
elapsed = (time.time() - start)/1000
但也许有更好的办法吗?
您应该使用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
但什么时候我some_function有一个参数,我想称之为'some_function (some_object)'? –
你应该在初始块中准备它,并在时间模块中使用它,我认为 – oleg
我同意timeit是事实上的“模块”来运行Python源本地定时。然而,如果你有兴趣在分析方面做一些繁重的工作,你可能会发现像runnakerun这样有用的工具(Python本身的一个可视化工具)。
从runsnakerun一个片段(这真的只是从蟒蛇Profiler使用数据):
排序为原始档案信息数据网格视图
标识:函数名称,文件名,目录名称
时间花费:累积性,累积性的每次,本地和本地每时间
整体数据网格视图
(全部)的呼叫者-的-此功能,(全部)被呼叫者-的 - 该功能查看
只是为了增加是的,我知道“主义......你要的东西简单,这是后在上面。但是,我想我会分享另一种可能的解决方案,以防您需要更多信息。如果你不觉得有用,也许别人会!
为了得到一个输出配置文件,将在runsnakerun跑,冒这样的:
$ python -m cProfile -o <outputfilename> <script-name> <options>
另外,如果你在* nix的发展可以用time,但现在你已经开销增加,并可能失去一些精确度Python模块timeit可能提供。
不同的需求需要不同的解决方案 - 只需添加到你的袋子技巧。
HTH
使用timeit模块是我recomendation ... –
CPROFILE也非常丰富......但没有做很你想要的这里 –