自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

我們先來看下效果圖:

怎么樣,很是驚艷吧~

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

1. 安裝 graphviz 工具

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

下載地址

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

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

接下來我們還需要安裝兩個(gè) Python 依賴庫。

pip install pycallgraph

下面我們先寫一個(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()

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

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

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

我們?cè)賮硪粋€(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é),不過在編譯器內(nèi)部是調(diào)用了 re 正則的,我們來看看最終生成的圖片:

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

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

責(zé)任編輯:龐桂玉 來源: 小詹學(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 開發(fā)編程

2025-02-25 11:14:39

2020-03-11 14:39:26

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

2020-08-04 13:40:02

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

2021-04-24 23:26:12

Python儀表盤存儲(chǔ)

2019-03-20 13:44:30

Web 開發(fā)代碼

2023-04-14 08:21:55

2018-03-24 21:38:54

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

2018-03-26 14:20:23

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

2020-03-23 14:55:52

Python可視化Plotly

2021-06-24 13:00:35

微軟開源可視化

2017-10-14 13:54:26

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

2016-09-09 13:48:54

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

2009-04-21 14:26:41

可視化監(jiān)控IT管理摩卡

2023-08-14 23:45:55

點(diǎn)贊
收藏

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