博客
关于我
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()    

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

你可能感兴趣的文章
Netty源码—7.ByteBuf原理四
查看>>
Netty源码—8.编解码原理一
查看>>
Netty源码—8.编解码原理二
查看>>
Netty源码解读
查看>>
netty的HelloWorld演示
查看>>
Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
查看>>
Netty的网络框架差点让我一夜秃头,哭了
查看>>
Netty相关
查看>>
Netty简介
查看>>
Netty线程模型理解
查看>>
netty解决tcp粘包和拆包问题
查看>>
Netty速成:基础+入门+中级+高级+源码架构+行业应用
查看>>
Netty遇到TCP发送缓冲区满了 写半包操作该如何处理
查看>>
netty(1):NIO 基础之三大组件和ByteBuffer
查看>>
Netty:ChannelPipeline和ChannelHandler为什么会鬼混在一起?
查看>>
Netty:原理架构解析
查看>>
Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
查看>>
Network Sniffer and Connection Analyzer
查看>>
Network 灰鸽宝典【目录】
查看>>
Networkx写入Shape文件
查看>>