1.pycallgraph介绍
Pycallgraph是一个为python应用程序创建调用关系图可视化的python模块。需要快速掌握python代码的调用关系时,使用pycallgraph可以事半功倍。
2.生成示例
生成的调用图效果如下图所示
示例代码
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官网