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