当你的 Python 项目变得越来越大和复杂时,理解它会变得很有挑战性。即使你编写了整个项目,也不可能完全了解它的工作原理。调试和分析你的代码对于更好地理解它至关重要。
VizTracer 是一款通过追踪和可视化代码执行来帮助你理解 Python 代码的工具。无需更改任何源代码,VizTracer 可以记录函数入口/出口、函数参数/返回值以及任何任意变量,然后使用直观的前端 Google Trace-Viewer 显示数据。
这是一个运行 蒙特卡洛树搜索 的示例

(Tian Gao, CC BY-SA 4.0)
每个函数都以堆栈样式记录并在时间轴上可视化,以便你可以看到运行程序时发生的情况。你可以放大以查看任何特定点的详细信息

(Tian Gao, CC BY-SA 4.0)
VizTracer 还可以自动记录函数参数和返回值;你可以单击函数入口并查看详细信息

(Tian Gao, CC BY-SA 4.0)
或者你可以创建一个全新的信号并使用它来记录变量。例如,这显示了你执行梯度下降时的成本值

(Tian Gao, CC BY-SA 4.0)
与其他设置复杂的工具相比,VizTracer 非常易于使用,并且没有任何依赖项。你可以通过 pip 安装它,方法如下:
pip install viztracer
并通过输入以下内容来追踪你的程序(其中 <your_script.py>
是你的脚本名称):
viztracer <your_script.py>
VizTracer 将在你的工作目录中生成一份 HTML 报告,你可以在 Chrome 中打开它。
VizTracer 提供了其他高级功能,例如过滤器,你可以使用它们来过滤掉你不想要追踪的函数,以便获得更简洁的报告。例如,要仅包含你感兴趣的文件中的函数:
viztracer include_files ./ --run <your_script.py>
要记录函数参数和返回值:
viztracer --log_function_args --log_return_value <your_script.py>
要记录与特定正则表达式匹配的任何任意变量:
# log variables starts with a
viztracer --log_var a.* --run <your_script.py>
你可以通过对源代码进行少量修改来获得其他功能,例如用于记录数值和对象的自定义事件。
VizTracer 还包括一个虚拟调试器 (vdb),可以调试 VizTracer 的日志文件。vdb 调试你执行的代码(很像 pdb),以便你可以理解代码流程。它很有帮助地支持回溯,因为它知道发生的一切。
与某些原型不同,VizTracer 在纯 C 中实现了其核心,这大大降低了开销,使其达到与 cProfile 类似的水平。
VizTracer 是开源的,根据 Apache 2.0 许可证发布,并支持所有常见的操作系统平台(Linux、macOS 和 Windows)。你可以在 GitHub 上了解更多关于其功能的信息并访问其源代码。
1 条评论