我在解释数据时遇到问题cProfile。为了向您展示我的问题,我创建了这个简单的脚本。
函数 D 调用 B 和 C,它们都调用 A。
函数 A 显然占用了 1 秒(+开销)。
如果我们查看蛇形可视化结果,您会发现报告有点奇怪。我知道函数 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')
Run Code Online (Sandbox Code Playgroud)
不幸的是,Python 配置文件不存储整个调用树。(这太昂贵了。)我已经在这里记录了这个问题,并作为一个蛇维兹问题。
我最近创建了用于可视化 Python 配置文件的tuna,以解决其中一些问题。tuna无法显示整个调用树,但至少它也不会显示错误信息。
安装与
pip3 install tuna
Run Code Online (Sandbox Code Playgroud)
创建运行时配置文件
python -m cProfile -o program.prof yourfile.py
Run Code Online (Sandbox Code Playgroud)
然后在文件上运行 tuna
tuna program.prof
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2203 次 |
| 最近记录: |