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

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

时间:2023-03-26 01:07:52 Python

今天分享一个Python领域的神级第三方库——pycallgraph,通过这个库结合graphviz工具,可以非常方便的完成可视化Python应用程序调用过程先来看一下效果图,太神奇了~一起来完成可视化过程吧。安装graphviz工具生成图片的过程依赖于工具graphviz。我们先下载安装下载地址http://www.graphviz.org/downl...实战接下来我们需要安装两个Python依赖库pipinstallpycallgraph接下来我们先写一段基础代码frompycallgraphimportPyCallGraphfrompycallgraph.output导入GraphvizOutputclassBanana:defeat(self):passclassPerson:def__init__(self):self.no_bananas()defno_bananas(self):self.bananas=[]defadd_banana(self,bananas):self.bananas.append(banana)bana[self)bananas:eat()forbananainself.bananas]self.no_bananas()defmain():graphviz=GraphvizOutput()graphviz.output_file='basic.png'withPyCallGraph(output=graphviz):forinaperson=Person()range(10):person.add_banana(Banana())person.eat_bananas()if__name__=='__main__':main()的代码比较简单。它定义了两个简单的类。主要pycallgraph的核心代码在main函数中。在with代码块下,执行一次我们定义的代码运行上面的代码,会在目录下生成basic.png图片文件。从生成的图片中,可以非常清晰的看到整个代码的运行过程。从主要代码块到各个类的初始化,可以说是一目了然。我们来看一个更复杂的例子=graphviz=graphviz,config=match(reo)defcompile():returnre.compile('^[abetors]*$')defmatch(reo):[reo.match(a)forainwords()]defwands():返回['缩写','缩写','abettor','abettors','abettors','能力',“能力”,“磨损”,“磨损”,“磨碎”,“磨蚀”,“擦伤”,]=='__main__':main()的代码也是不负责任的,但是在编译器内部调用了reregular。我们看一下最终生成的图片,可以看到整个代码过程要复杂很多,因为一个内部调用了很多常规的内部函数等等,但是整体还是很清楚。可以说,这个神级第三方库绝对是很多Python爱好者的福音,尤其是刚刚接触Python领域的朋友们。当我们遇到一些不熟悉和复杂的代码块时,不妨借助这个库中的可视化试试,看看能不能从中得到启发~以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,送“J”还可以领取大量学习资料或者上编程学习网站了解更多关于编程技术。