python - 将 python 分析到固定的调用深度

标签 python profiling

标准分析器的输出通常被低级函数所花费的时间的详细信息所堵塞。在一个大型、复杂的项目中,我想首先大致了解我的代码的哪些部分比其他部分花费的时间更长。

具体来说,我想知道是否有一种方法可以告诉探查器报告仅限于特定调用深度的结果。例如,设置深度 = 0 应该只显示整个 python 脚本的总时间;深度 = 1 可以显示脚本中各行的时间; height = 2 可以显示脚本中函数调用的函数的时间,等等。

有这样的工具吗?

最佳答案

这可能不完全是您正在寻找的内容,但我个人发现pyprof2calltree很有用。它将内置 cProfile 的输出转换为 KCacheGrind 等工具可以理解的格式。 。 (也有使用不同小部件集的实现,例如 qcachegrind)。

像 KCacheGrind 这样的工具,除其他外,允许您可视化分析代码的调用树,并且很容易看到特定调用函数(即顶级主函数)的哪些被调用者消耗最多时间 - 检查随附的屏幕截图以获得更好的想法。 profile visualization (图片来源:link)

安装pyprof2calltreeKCacheGrind后,可视化分析器输出只需一个命令:

pyprof2calltree -k -i todo_profile.cprof

-i 选项指定i输入文件是什么,-k 开关运行已安装的可视化工具(例如 KCacheGrind) .

关于python - 将 python 分析到固定的调用深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47859745/

相关文章:

Python正则表达式重复

python - 重写 api.onchange 方法

python - 模拟 - 加速 python 中的脚本

c - 如何分析线程负载平衡?

python - multiprocessing pool.map 按特定顺序调用函数

python - 评估函数不同参数的性能

python - matplotlib 中颜色条标签的对齐

c++ - DLL 不适用于 x64 系统

java - 如何解决 Jenkins UI 缓慢的问题?

c++ - 性能报告显示此函数 "__memset_avx2_unaligned_erms"有开销。这是否意味着内存未对齐?