最佳答案
我一直在使用 cProfile 来分析我的代码,它工作得很好。我还使用 GProf2dot.py来可视化结果(使其更清晰一些)。
然而,cProfile (以及我目前看到的大多数其他 Python 分析器)似乎只在函数调用级别进行分析。当从不同的地方调用某些函数时,这会导致混淆——我不知道调用 # 1或调用 # 2是否占用了大部分时间。当所讨论的函数有六层深,从其他七个地方调用时,情况就更糟了。
我怎么才能得到一条一条的侧写?
而不是这样:
function #12, total time: 2.0s
我想看看这样的东西:
function #12 (called from somefile.py:102) 0.5s
function #12 (called from main.py:12) 1.5s
CProfile 确实显示了总共有多少时间“传输”到父节点,但是当您有一大堆层和相互连接的调用时,这个连接又丢失了。
理想情况下,我希望有一个图形用户界面,可以解析数据,然后显示我的源文件,每一行的总时间。就像这样:
main.py:
a = 1 # 0.0s
result = func(a) # 0.4s
c = 1000 # 0.0s
result = func(c) # 5.0s
然后,我就可以单击第二个“ func (c)”调用,查看该调用中与“ func (a)”调用不同的内容所占用的时间。这说得通吗?