目录
引言安装 graphviz 工具实战引言
今天我们来分享一个 Python 领域的神级第三方库 -- pycallgraph,通过该库并结合 graphviz 工具,就可以非常方便的完成 Python 应用程序调用流程的可视化工作
【资料图】
我们先来看下效果图
怎么样,很是惊艳吧~
下面我们就来一起完成这个可视化过程
安装 graphviz 工具
生成图片的过程,是依赖工具 graphviz 的,我们先进行下载安装
下载地址
www.graphviz.org/download/
详细对于 graphviz 工具,大家应该也熟悉了,我们以前通过该工具进行过决策树的可视化工作,具体可以看这里
数据分析入门系列教程-决策树实战
上面的链接一详细的安装配置过程,这里就不再赘述了
实战
接下来我们还需要安装两个Python依赖库
pip install pycallgraph
下面我们先写一个基础的代码
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()
代码比较简单,定义了两个简单类,主要 pycallgraph 的核心代码在 main
函数中,在 with 代码块下,把我们定义的代码执行一遍即可
运行上面的代码,会在当前目录下生成 basic.png 图片文件
从生成的图片可以非常清晰的看出整个代码的运行过程,从 main 代码块到各个类的初始化,可以说一目了然
我们再来一个复杂一点的例子
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()
代码同样不负责,不过在编译器内部是调用了 re 正则的,我们来看看最终生成的图片
可以看到整个代码过程复杂了很多,因为内部调用了很多正则内部函数等,但是整体还是非常清晰的
可以说这个神级第三方库,绝对是众多 Python 爱好者,尤其是刚刚入门 Python 领域的朋友的福音,当我们遇到某些不熟悉的较为复杂的代码块时,不妨使用该库来尝试一下可视化,看看能不能从中爆发灵感呢~
以上就是可视化Python程序调用流程解析的详细内容,更多关于可视化Python程序调用的资料请关注脚本之家其它相关文章!
X 关闭
X 关闭
- 1亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 2现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 3如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 4AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 5转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 6充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 7好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 8名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 9亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 10京东绿色建材线上平台上线 新增用户70%来自下沉市场