偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

神器,輕松可視化 Python 程序調(diào)用流程

開(kāi)發(fā) 后端
今天我們來(lái)分享一個(gè) Python 領(lǐng)域的神級(jí)第三方庫(kù) -- pycallgraph,通過(guò)該庫(kù)并結(jié)合 graphviz 工具,就可以非常方便的完成 Python 應(yīng)用程序調(diào)用流程的可視化工作。

我們先來(lái)看下效果圖:

怎么樣,很是驚艷吧~

下面我們就來(lái)一起完成這個(gè)可視化過(guò)程。

1. 安裝 graphviz 工具

生成圖片的過(guò)程,是依賴(lài)工具 graphviz 的,我們先進(jìn)行下載安裝。

下載地址

  • http://www.graphviz.org/download/

2. 實(shí)戰(zhàn)

接下來(lái)我們還需要安裝兩個(gè) Python 依賴(lài)庫(kù)。

pip install pycallgraph

下面我們先寫(xiě)一個(gè)基礎(chǔ)的代碼;

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 = 'basic.png'
with PyCallGraph(output=graphviz):
person = Person()
for a in range(10):
person.add_banana(Banana())
person.eat_bananas()
if __name__ == '__main__':
main()

代碼比較簡(jiǎn)單,定義了兩個(gè)簡(jiǎn)單類(lèi),主要 pycallgraph 的核心代碼在 main 函數(shù)中,在 with 代碼塊下,把我們定義的代碼執(zhí)行一遍即可

運(yùn)行上面的代碼,會(huì)在當(dāng)前目錄下生成 basic.png 圖片文件

從生成的圖片可以非常清晰的看出整個(gè)代碼的運(yùn)行過(guò)程,從 main 代碼塊到各個(gè)類(lèi)的初始化,可以說(shuō)一目了然。

我們?cè)賮?lái)一個(gè)復(fù)雜一點(diǎn)的例子:

import re
from pycallgraph import PyCallGraph
from pycallgraph import Config
from pycallgraph.output import GraphvizOutput
def main():
graphviz = GraphvizOutput()
graphviz.output_file = 'regexp.png'
config = Config(include_stdlib=True)
with PyCallGraph(output=graphviz, config=config):
reo = compile()
match(reo)
def compile():
return re.compile('^[abetors]*$')
def match(reo):
[reo.match(a) for a in words()]
def words():
return [
'abbreviation',
'abbreviations',
'abettor',
'abettors',
'abilities',
'ability',
'abrasion',
'abrasions',
'abrasive',
'abrasives',
]
if __name__ == '__main__':
main()

代碼同樣不負(fù)責(zé),不過(guò)在編譯器內(nèi)部是調(diào)用了 re 正則的,我們來(lái)看看最終生成的圖片:

可以看到整個(gè)代碼過(guò)程復(fù)雜了很多,因?yàn)閮?nèi)部調(diào)用了很多正則內(nèi)部函數(shù)等,但是整體還是非常清晰的

可以說(shuō)這個(gè)神級(jí)第三方庫(kù),絕對(duì)是眾多 Python 愛(ài)好者,尤其是剛剛?cè)腴T(mén) Python 領(lǐng)域的朋友的福音,當(dāng)我們遇到某些不熟悉的較為復(fù)雜的代碼塊時(shí),不妨使用該庫(kù)來(lái)嘗試一下可視化,看看能不能從中爆發(fā)靈感呢~

責(zé)任編輯:龐桂玉 來(lái)源: 小詹學(xué)Python
相關(guān)推薦

2022-02-23 09:50:52

PythonEchartspyecharts

2021-10-08 09:27:11

Python圖形化工具

2021-07-02 14:07:00

可視化Plotly漏斗圖

2022-08-26 09:15:58

Python可視化plotly

2009-08-03 21:43:03

IT運(yùn)維可視化摩卡

2021-07-27 11:45:37

Python 開(kāi)發(fā)編程

2025-05-16 10:00:00

Python數(shù)據(jù)可視化

2025-02-25 11:14:39

2020-03-11 14:39:26

數(shù)據(jù)可視化地圖可視化地理信息

2021-04-24 23:26:12

Python儀表盤(pán)存儲(chǔ)

2020-08-04 13:40:02

數(shù)據(jù)可視化熱力圖表格

2019-03-20 13:44:30

Web 開(kāi)發(fā)代碼

2018-03-24 21:38:54

Python數(shù)據(jù)庫(kù)數(shù)據(jù)可視化

2018-03-26 14:20:23

PythonMatplotlib數(shù)據(jù)可視化

2023-04-14 08:21:55

2021-06-24 13:00:35

微軟開(kāi)源可視化

2020-08-10 06:22:02

繪圖命令dot

2016-09-09 13:48:54

API可視化華為開(kāi)發(fā)者社區(qū)

2020-03-23 14:55:52

Python可視化Plotly

2017-10-14 13:54:26

數(shù)據(jù)可視化數(shù)據(jù)信息可視化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)