使用Graphviz进行Python项目代码可视化:理解各类函数调用关系及耗时

本文介绍了如何使用Graphviz工具在Python项目中提高代码可读性,通过实例演示了如何安装Graphviz和pycallgraph库,以及如何在yolov5项目中测试函数调用可视化。
摘要由CSDN通过智能技术生成

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,等待程序运行完毕
在这里插入图片描述
程序运行完毕后可在对应路径看到项目中函数调用关系,以及它们的运行时间

程序入口部分
CNN模型部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值