我一直在使用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确实显示了“转移”到父级的总时间,但是当您有许多层和相互连接的呼叫时,该连接也会丢失。
理想情况下,我希望拥有一个可以解析数据的GUI,然后向我显示源文件以及每行的总时间。像这样:
main.py:
a = 1 # 0.0s
result = func(a) # 0.4s
c = 1000 # 0.0s
result = func(c) # 5.0s
然后,我可以单击第二个“ func(c)”调用,以查看该调用中所占用的时间,与“ func(a)”调用分开。
那有意义吗?是否有任何收集此类信息的性能分析库?我错过了一些很棒的工具吗?
人到中年有点甜
相关分类