博客
关于我
Mac使用graphviz绘制Python代码的函数调用关系图
阅读量:746 次
发布时间:2019-03-23

本文共 1585 字,大约阅读时间需要 5 分钟。

前言

当代码量庞大时,各类函数和类之间的调用关系往往难以直观理清。此时,调用关系图就派上用场了。

引用自https://www.cnblogs.com/GO-NO-1/p/7155684.html

准备工作

  1. 安装graphviz,可以通过命令行安装或下载安装包
  2. 安装pycallgraph,通过pip命令安装即可

示例

        # 在主函数之前添加以下代码        from pycallgraph import PyCallGraph        from pycallgraph.output import GraphvizOutput        graphviz = GraphvizOutput()        graphviz.output_file = 'basic.png'        with PyCallGraph(output=graphviz):            main() # 替换为您的主函数逻辑    

例如:

        # 代码示例        class Banana:            def eat(self):                pass        class Person:            def __init__(self):                self.no_bananas()            def no_bananas(self):                self.bananas = []            def add_banana(self, banana):                self.bananas.append(banana)            def eat_bananas(self):                [banana.eat() for banana in self.bananas]                self.no_bananas()        def main():            person = Person()            for a in range(10):                person.add_banana(Banana())            person.eat_bananas()        if __name__ == '__main__':            # 加入代码之前的五行            from pycallgraph import PyCallGraph            from pycallgraph.output import GraphvizOutput            graphviz = GraphvizOutput()            graphviz.output_file = 'basic.png'            with PyCallGraph(output=graphviz):                main()    

生成的调用关系图可见于[图示](图片链接)。

你可能感兴趣的文章
MySQL 创建新用户及授予权限的完整流程
查看>>
mysql 创建表,不能包含关键字values 以及 表id自增问题
查看>>
mysql 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
mysql 协议的退出命令包及解析
查看>>
mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
查看>>
mysql 多个表关联查询查询时间长的问题
查看>>
mySQL 多个表求多个count
查看>>
mysql 多字段删除重复数据,保留最小id数据
查看>>
MySQL 多表联合查询:UNION 和 JOIN 分析
查看>>
MySQL 大数据量快速插入方法和语句优化
查看>>
mysql 如何给SQL添加索引
查看>>
mysql 字段区分大小写
查看>>
mysql 字段合并问题(group_concat)
查看>>
mysql 字段类型类型
查看>>
MySQL 字符串截取函数,字段截取,字符串截取
查看>>
MySQL 存储引擎
查看>>
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
查看>>
MySQL 存储过程参数:in、out、inout
查看>>
mysql 存储过程每隔一段时间执行一次
查看>>