使用VizTracer可视化Python代码执行

2020-11-03 10:14:45

随着Python项目变得越来越大和越来越复杂,理解它很有挑战性。即使你写下整个项目,也不可能完全知道它是如何工作的。调试和分析您的代码对于更好地理解它是必不可少的。

VizTracer是一个通过跟踪和可视化执行来帮助您理解Python代码的工具。无需对源代码进行任何更改,VizTracer就可以记录函数入口/出口、函数参数/返回和任何任意变量,然后使用直观的前端Google Trace-Viewer显示数据。

每个函数都在时间线上以堆栈样式记录和可视化,以便您可以在运行程序时看到正在发生的事情。您可以放大以查看任何特定点的详细信息:

VizTracer还可以自动记录函数参数和返回值;您可以单击函数条目并查看详细信息:

或者,您可以创建一个全新的信号并使用它来记录变量。例如,这显示了进行渐变下降时的成本值:

与其他设置复杂的工具相比,VizTracer超级易于使用,并且没有任何依赖关系。您可以使用以下命令从pip安装它:

VizTracer将在您的工作目录中生成一个HTML报告,您可以在Chrome中打开该报告。

VizTracer提供了其他高级功能,如过滤器,您可以使用这些功能来过滤掉您不想跟踪的函数,这样您就会有一个更干净的报告。例如,要仅包括文件中的函数,您需要执行以下操作:

通过对源代码进行少量修改,您可以获得其他功能,如记录数值和对象的自定义事件。

VizTracer还包括一个虚拟调试器(VDB),可以调试VizTracer的日志文件。VDB调试您的执行代码(很像PDB),这样您就可以理解代码流。有益的是,它支持时间倒流,因为它知道发生的一切。

与一些原型不同,VizTracer使用纯C实现其核心,这显著地将开销降低到类似于cProfile的水平。

VizTracer是开源的,在Apache 2.0许可下发布,并支持所有常见的操作系统平台(Linux、MacOS和Windows)。您可以在GitHub上了解更多关于其功能的信息,并访问其源代码。