1、引言
随着项目规模的扩大和复杂性的增加,理解和维护代码逻辑变得越来越具有挑战性。为了更好地理解Python项目的运行逻辑,我最近尝试了使用Graphviz工具进行代码可视化。在这篇文章中,我将分享我的技术经验,介绍如何利用Graphviz在Python项目中可视化运行逻辑,提高代码的可读性和理解性。
举个例子:
因为作者主要是做计算机视觉方向的,所以拿非常流行的目标检测项目yolov5作为例子。
这个项目经过多次优化,功能比较丰富,不少新手对于一个完整的项目代码阅读比较吃力
若是进行可视化展示,可以更加清晰的看到各种函数方法之间的调用关系,提升学习效率。
2、Graphviz简介
Graphviz工具: Graphviz是一个开源的图形可视化工具包,通过使用DOT语言描述图形结构,可以生成各种类型的图形,包括流程图、依赖图等。在Python项目中,使用Graphviz可以帮助我们更清晰地了解代码的执行路径和模块之间的关系。
Graphviz 库:与Graphviz 工具对应,使用 Graphviz 库可以使用 Python 的语法生成 dot 语言绘图脚本,并调用 Graphviz 工具生成图片并保存。但是由于 Graphviz 库并不是独立工作的库,它需要连接 Graphviz 工具来联合工作,也就是说当你需要使用 Graphviz 库时必须安装 Graphviz 工具并设置好 Python 调用 Graphviz 工具的接口。
3、安装graphviz工具
下载地址:https://www.graphviz.org/download/
我使用的是windows,这个支持很多个平台,linux、mac都能用。
windows挑最新的下载就行,别的系统看官网里面可以直接命令行下载。
win10系统可以直接点击以下链接下载
下载完成后双击运行
点击下一步
点击我接受
选择第二个选项,这个会自动添加到系统环境变量中去,不需要自己手动添加环境变量了
然后点击下一步
可自定义安装目录,我这里选择默认路径
点击下一步
直接点击安装
安装完成
这时可以看到对应路径有了Graphviz工具文件夹
按win+R键,输入cmd,点击确定进入终端
按win+R键,输入cmd,点击确定进入终端
输入
dot –v
可以看到以下信息表示Graphviz工具安装成功
4、安装graphviz库
可以使用以下命令通过pip安装:
pip install graphviz
5、安装pycallgraph库
pycallgraph是一个用于生成Python程序函数调用图的工具库。它可以帮助开发者可视化程序的执行流程,了解函数之间的调用关系,以及每个函数的执行时间。
安装命令如下:
pip install pycallgraph
如果安装这个报错,显示了一个什么setup的,就是你setuptools这个库比较新,需要降级一下才能下载。降级下载setuptools命令如下:
pip install setuptools==57.5.0
再次安装就可以了
6、测试功能
选择一个python项目作为例子,测试可视化效果
6.1、 建立测试脚本
在项目根目录下建立一个测试脚本
# 绘制流程图
from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
import classify.train as fun_test
def main():
graphviz = GraphvizOutput()
# 可视化图片保存路径
graphviz.output_file = r'C:\Users\user\Desktop\test_code\devin-tools\basicdemo.png'
with PyCallGraph(output=graphviz):
fun_test.run()
if __name__ == '__main__':
main()
作者选择yolov5的图片分类训练方法进行测试,将对应方法使用import classify.train as fun_test导入
6.2、 修改训练轮次
由于需要等待程序运行完毕才能得到可视化结果,因此需要提前将epoch训练轮次设置为1,后面的函数调用都是重复的
6.3、 启动测试脚本
运行测试脚本graphviz_test.py,等待程序运行完毕
程序运行完毕后可在对应路径看到项目中函数调用关系,以及它们的运行时间