神库,可视化Python程序调用流程

CodeAegis
• 阅读 557

今天我们来分享一个 Python 领域的神级第三方库 -- pycallgraph,通过该库并结合 graphviz 工具,就可以非常方便的完成 Python 应用程序调用流程的可视化工作

我们先来看下效果图

神库,可视化Python程序调用流程

怎么样,很是惊艳吧~

下面我们就来一起完成这个可视化过程

安装 graphviz 工具

生成图片的过程,是依赖工具 graphviz 的,我们先进行下载安装

下载地址

http://www.graphviz.org/downl...

详细对于 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 图片文件

神库,可视化Python程序调用流程

从生成的图片可以非常清晰的看出整个代码的运行过程,从 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 领域的朋友的福音,当我们遇到某些不熟悉的较为复杂的代码块时,不妨使用该库来尝试一下可视化,看看能不能从中爆发灵感呢~

好了,这就是今天分享的全部内容,喜欢就点个赞吧~

本文由mdnice多平台发布

点赞
收藏
评论区
推荐文章
Frida + AndroidAsync 实现 RPC
一、目标我们在之前的教程里面使用python的Flask库启动一个webServer来实现App函数的RPC调用。今天我们介绍一个新盆友,AndroidAsync,用AndroidAsync来启动webServer,这样frida就直接搞定,不需要再请Python来帮忙了。二、步骤AndroidAsyncAndroidAsync的详细介绍大家可
Karen110 Karen110
4年前
一文带你读懂PyQt:用Python做出与C++一样的GUI界面应用程序
\一、简介Python标准库更多的适合处理后台任务,唯一的图形库tkinter使用起来很不方便,所以后来出现了针对Python图形界面开发的扩展库,今天老猿要介绍的是主流Python图形界面扩展库之一的PyQt。在介绍PyQt之前,必须先简单介绍一下Qt。Qt是一个C可视化开发平台,是一个跨平台的C图形用户界面应用程序框架(CGUI)
Stella981 Stella981
3年前
Python 爬虫:把廖雪峰的教程转换成 PDF 电子书
写爬虫似乎没有比用Python更合适了,Python社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的library分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的Python教程爬下来做成PDF电子书方便大家离线阅读。开始写爬虫前,我们先来分析一下该网站1(https://www.oschina.net/
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
Python 数据库操作
Python数据库操作一、前言数据库是应用程序保存数据的一个重要手段,因此学习python语言的数据库操作也是非常重要的内容。今天我们就来分享pymysql模块的使用。二、数据库基本操作2.1安装PyMySQL模块我使用的是Python3.x版本,我们可以通过
【Python学习教程】常用的8个Python数据可视化库!
Python是一门非常优秀的编程语言,被广泛的应用于各个领域,它不仅简单、易懂、语法清晰,还拥有各种各样的库,让我们的工作更高效、更便捷。今天为大家分享8个Python库,有了它们之后,数据可视化超轻松,快来学习一下吧。  数据可视化是展示数据、理解数据的有效手段,常用的Python数据可视化库如下:  1.Matplotlib第一个Python可视化库
Stella981 Stella981
3年前
Python数据可视化
Python数据可视化Wordcloud安装启动命令行,输入:pipinstallwordcloudwordcloud库介绍及简单使用wordcloud库,可以说是python非常优秀的词云展示第三方库。词云以词语为基本单位更加直
Stella981 Stella981
3年前
Robot Framework中使用C库
Robot框架如何使用C库介绍这里通过一个简单的例子,演示如何在RobotFramework的测试库中使用C语言。我们使用Python标准库中的ctypes模块(对于早期Python版本可能未集成,需要另行安装),该模块需要调用C代码编写的共享库。当前的例子我仅在OSX上实现与测试,对于Unix和Linux平
Stella981 Stella981
3年前
Linux上安装pip以及setuptools
毕竟丰富的第三方库是python的优势所在,为了更加方便的安装第三方库,使用pip命令,我们需要进行相应的安装。1、安装pip前需要前置安装setuptools命令如下:wgetnocheckcertificatehttps://pypi.python.org/packages/source/s/setuptools
Wesley13 Wesley13
3年前
5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤醉卧沙场君莫笑,古来征战几人回?有时候我们做数据可视化并不需要特别复杂的功能,仅仅是想把简单的数据用图形展示出来今天就给大家介绍一种非常适合新手的python可视化库pygal!(h
小白学大数据 小白学大数据
8个月前
Pandas与Matplotlib:Python中的动态数据可视化
在数据科学领域,动态数据可视化是一种强大的工具,它可以帮助我们实时监控和分析数据变化。在本文中,我们将探讨如何使用Python中的Pandas和Matplotlib库来实现动态数据可视化,并以访问京东数据为案例进行详细说明。为什么选择Pandas和Matp
CodeAegis
CodeAegis
Lv1
心逐南云逝,形随北雁来。
文章
3
粉丝
0
获赞
0