如何逐行分析Python代码?
- 论坛
- 如何逐行分析Python代码?
26 浏览
如何逐行分析Python代码?
我一直在使用cProfile来对我的代码进行性能分析,效果非常好。我还使用gprof2dot.py来可视化结果(使得结果更清晰)。
然而,cProfile(以及我迄今为止见过的大多数其他Python性能分析器)似乎只能对函数调用进行分析。当某些函数从不同的地方调用时,这会导致混淆 - 我不知道是调用#1还是调用#2占用了大部分时间。当所涉及的函数嵌套六层,从七个其他地方调用时,情况变得更糟。
如何进行逐行的性能分析?
而不是这样:
函数 #12,总时间:2.0秒
我想看到类似于这样的信息:
函数 #12(由somefile.py:102调用)0.5秒 函数 #12(由main.py:12调用)1.5秒
cProfile确实显示了多少时间“传递”给了父函数,但是当你有一堆层级和相互调用时,这种连接就丢失了。
理想情况下,我希望有一个GUI能够解析数据,然后显示给我源文件,并给每行一个总时间。类似于这样:
main.py: a = 1 # 0.0秒 result = func(a) # 0.4秒 c = 1000 # 0.0秒 result = func(c) # 5.0秒
然后,我就可以点击第二个“func(c)”调用,查看在该调用中占用时间的部分,与“func(a)”调用分开。这样说得通吗?