pycallgraph--使用pycallgraph绘制Python函数调用关系图


1.pycallgraph介绍

Pycallgraph是一个为python应用程序创建调用关系图可视化的python模块。需要快速掌握python代码的调用关系时,使用pycallgraph可以事半功倍。

2.生成示例

生成的调用图效果如下图所示
basic.png
示例代码

from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
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():
    graphviz = GraphvizOutput()
    graphviz.output_file = 'basic1.png'

    with PyCallGraph(output=graphviz):
        person = Person()
        for a in range(10):
            person.add_banana(Banana())
        person.eat_bananas()
if __name__ == '__main__':
    main()

3.安装方法

首先需要安装graphviz,然后配置环境变量
下载链接:http://www.graphviz.org/download/

pip install graphviz
pip install pycallgraph

安装好graphviz之后,在命令行中输入dot -v,如果打印graphviz的安装信息等,就说明安装成功

4.使用方法

官网中给了命令行的示例,但是我在使用命令行的时候发现总是提示'pycallgraph' 不是内部或外部命令,也不是可运行的程序或批处理文件。

pycallgraph graphviz -- ./程序名称.py

因此还是使用代码的方式,在需要画图的函数中插入入如下代码

from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput

with PyCallGraph(output=GraphvizOutput()):
    code_to_profile()

文章参考:pycallgraph官网


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM