神器,轻松可视化 Python 程序调用流程

作者 | 周萝卜
今天我们来分享一个 Python 领域的神级第三方库 -- pycallgraph,通过该库并结合 graphviz 工具,就可以非常方便的完成 Python 应用程序调用流程的可视化工作~
我们先来看下效果图:

怎么样,很是惊艳吧~
下面我们就来一起完成这个可视化过程

安装 graphviz 工具
生成图片的过程,是依赖工具 graphviz 的,我们先进行下载安装
下载地址
http://www.graphviz.org/download/

实战
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 正则的,我们来看看最终生成的图片:


分享
点收藏
点点赞
点在看
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 中法元首相会都江堰 7904087
- 2 日方军机滋扰擅闯或被视为训练靶标 7808086
- 3 大闸蟹为何会在欧美泛滥成灾 7712472
- 4 国际机构看中国经济 关键词亮了 7619295
- 5 药酒里泡了十余年的海马竟是塑料 7522894
- 6 12306回应员工用装垃圾的簸箕接开水 7425306
- 7 日军机滋扰辽宁舰训练 中方严正交涉 7333459
- 8 国乒8比1击败日本队 11战全胜夺冠 7235121
- 9 罪犯被判死缓破口大骂被害人一家 7143949
- 10 千吨级“巨无霸”就位 7043870






![狄子怡 新壁纸上线[爱你][爱你] ](https://imgs.knowsafe.com:8087/img/aideep/2023/3/28/8d24f2c74347a0db4eecc7ea2e8d00f1.jpg?w=250)



![一千只猫薄禾cos作品图集_超级小禾儿恰巴耶夫约克公爵 [持续更新]](https://imgs.knowsafe.com:8087/img/aideep/2025/12/6/33868fd3ae6b55ba36bc5787f0211233.jpg?w=250)
AI100
