Python Call Graph是用于可视化 Python内部函数调用的包,其生成的为动态程序调用图 。
介绍
参考地址
Python Call Graph是用于可视化 Python内部函数调用的包,其生成的为动态程序调用图 。
原理 :利用了Python自带的DEBUG函数(sys.set_trace())来追踪;
可追踪项目 :函数名,函数的使用时间,函数间的调用关系;
输出多样化:
输出DOT文件:符合GraphViz的接口
输出JSON或者GDF文件:符合Gephi的接口
输出定制化: 可利用提供的接口,定制化输出文件
调用方式多样:
可以进行过滤:
总的来说Python Call Graph是一个简单的包。
基本代码演示 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ''' This example demonstrates a simple use of pycallgraph. ''' from pycallgraph import PyCallGraphfrom pycallgraph.output import GraphvizOutputclass 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 = 'basic.png' with PyCallGraph(output=graphviz): person = Person() for a in range (10 ): person.add_banana(Banana()) person.eat_bananas() if __name__ == '__main__' : main()
结果:
上图中展示了函数调用的树图 , 函数调用的次数 , 函数调用花费的时间