我开始学习Python,并且很快发现循环,函数调用和这类事情有很多开销。我找到了配置文件模块,它非常有用,但它似乎只显示函数调用而不是基本操作。例如:
import profile
def funct(n):
myrange = range(n)
for i in myrange:
for j in myrange:
pass
profile.run("funct(10000)")
产生以下输出:
5 function calls in 2.556 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 :0(range)
1 0.001 0.001 0.001 0.001 :0(setprofile)
1 0.000 0.000 2.555 2.555 <string>:1(<module>)
1 0.000 0.000 2.556 2.556 profile:0(funct(10000))
0 0.000 0.000 profile:0(profiler)
1 2.555 2.555 2.555 2.555 profiler.py:3(funct)
实际上几乎没有函数调用,但时间仍然很长。此外,用简单的语句替换传递线,例如&#34; a == b&#34;进一步缩短计算时间(在这种情况下为8.4秒)。
是否有可能从分析器中获取有关函数调用运行时的信息?如果没有,我还能用其他东西来获取更多分析信息吗? (例如我使用了多少比较操作,作业等)
真的,我发现我的程序的总运行时间是2.555秒,但是profliing列表的所有时间总计只有.001。我想看看所有其他时间的去向。我也会将它应用于更复杂的代码,而不是这个简单的例子。我已经尝试过搜索有关此信息的信息,但我找不到任何东西(或者我可能找错了东西)。
最后,我想使用此信息来查找有关代码中瓶颈的更多详细信息。尝试以我刚才提出的方式获得更多的分析可能不是正确的方式,所以如果有更好的事情我可以做,请随意解决。