我在解释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')
答案 0 :(得分:1)
不幸的是,Python配置文件没有存储整个调用树。 (这太昂贵了。)我已经记录了问题here并且作为snakeviz issue。
我最近创建了tuna,用于可视化Python配置文件来解决这些问题。金枪鱼不能显示整个调用树,但至少它也不显示错误信息。
安装
pip3 install tuna
创建运行时配置文件
python -mcProfile -o program.prof yourfile.py
然后在文件上运行金枪鱼
tuna program.prof