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官網