python cProfile / snakeviz无法处理调用相同函数的多个函数

时间:2018-05-20 16:17:13

标签: python cprofile

我在解释cProfile数据时遇到问题。为了向您展示我的问题,我创建了这个简单的脚本

函数D调用B和C,它们都调用A.
功能A明显占用1秒(+开销) 如果我们查看snakeviz结果,那么您可以看到报告有点奇怪。据我所知,功能A总共耗费了2秒,但在功能C内部,功能A只花了1秒,这就是我感兴趣的内容。有人知道是否有设置(或者是不同的观众)我没有这个问题?

import time
import cProfile

def A():
    time.sleep(1)

def B():
    A()

def C():
    A()

def D():
    B()
    C()

cProfile.run('D()','profileResults.prf')

snakeviz results

1 个答案:

答案 0 :(得分:1)

不幸的是,Python配置文件没有存储整个调用树。 (这太昂贵了。)我已经记录了问题here并且作为snakeviz issue

我最近创建了tuna,用于可视化Python配置文件来解决这些问题。金枪鱼不能显示整个调用树,但至少它也不显示错误信息。

安装

pip3 install tuna

创建运行时配置文件

python -mcProfile -o program.prof yourfile.py

然后在文件上运行金枪鱼

tuna program.prof

enter image description here

相关问题