当前位置: 首页 > 后端技术 > Python

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

时间:2023-03-26 18:12:29 Python

今天分享一个Python领域的神级第三方库——pycallgraph,通过这个库结合graphviz工具,可以非常方便的完成可视化Python应用程序调用过程先来看一下效果图,太神奇了~一起来完成可视化过程吧。安装graphviz工具生成图片的过程依赖于工具graphviz。我们先下载安装下载地址http://www.graphviz.org/downl...相信大家对graphviz这个工具应该不陌生。之前我们用过这个工具可视化过决策树,这里不再赘述实战。接下来,我们需要安装两个Python依赖项库pipinstallpycallgraph下面我们先写一个基本的代码frompycallgraphimportPyCallGraphfrompycallgraph.outputimportGraphvizOutputclassBanana:defeat(self):passclassPerson:def__init__(self.()defno_bananas(self):self.bananas=[]defadd_banana(self,banana):self.bananas.append(banana)defeat_bananas(self):[banana.eat()forbananainself.bananas]self.no_bananas()defmain():graphviz=GraphvizOutput()graphviz.output_file='basic.png'withPyCallGraph(output=graphviz):person=Person()forainrange(10):person.add_banana(Banana())person.eat_bananas()if__name__=='__main__':main()代码比较简单,定义了两个简单的类。主要pycallgraph的核心代码在main函数中。在with代码块下,我们定义上面的代码可以执行一次,会在当前目录下生成basic.png图片文件。从生成的图片可以清楚的看到整个代码的运行过程,从主代码块到各个类的初始化,可以说是一目了然我们又来了一个复杂一点的例子.outputimportGraphvizOutputdefmain():graphviz=GraphvizOutput()graphviz.output_file='regexp.png'config=Config(include_stdlib=True)withPyCallGraph(output=graphviz,config=config):reo=compile()match(reo)defcompile():returnre.compile('^[abetors]*$')defmatch(reo):[reo.match(a)forainwords()]DEFWORDS():Return'abrasives',]if__name__=='__main__':main()代码也是不负责任的,但是在编译器内部调用了re是正则,看一下最终生成的图片,可以看到整个代码过程复杂了很多,因为内部调用了很多正则内部函数,但是整体还是很清晰的。可以说,这个神级第三方库绝对数不胜数。Python爱好者的福音,尤其是Python领域的新手。当我们遇到一些不熟悉和复杂的代码块时,不妨使用这个库来尝试一下可视化,看看能不能从中得到灵感~以上就是本次分享的所有内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发“J”也能收到大量学习资料或者去编程学习网学习更多知识多种编程技术。