Python可视化程序调用流程解析

目录
  • 引言
  • 安装 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程序调用的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python可视化模块altair的使用详解

    目录 Altair是啥 Altair初体验 图表的保存 Altair之进阶操作 今天小编来和大家聊一下Python当中的altair可视化模块,并且通过调用该模块来绘制一些常见的图表,借助Altair,我们可以将更多的精力和时间放在理解数据本身以及数据的意义上面,从复杂的数据可视化过程中解脱出来. Altair是啥 Altair被称为是统计可视化库,因为它可以通过分类汇总.数据变换.数据交互.图形复合等方式全面地认识数据.理解和分析数据,并且其安装的过程也是十分的简单,直接通过pip命令来执行,

  • python数据可视化绘制世界人口地图

    目录 前言 获取两个字母的国别码 制作世界地图 绘制完整的世界人口地图 根据人口数量将国家分组 根据Pygal设置世界地图的样式 前言 数据来源:population_data.json, 先看一下数据长啥样 [ { "Country Name": "Arab World", "Country Code": "ARB", "Year": "1960", "Value"

  • Python可视化tkinter详解

    目录 1.基本用法 2.常用标签 1.基本用法 # coding:utf-8 import tkinter as tk # 创建窗口对象 window = tk.Tk() # 设置串口标题 window.title("Python GUI") # 设置窗口大小 window.geometry("600x100") # 固定写法,600x600, 单位为像素 # 使用窗口对象 window.mainloop() 2.常用标签 # coding:utf-8 import

  • Python可视化神器pyecharts之绘制箱形图

    目录 箱形图 概念 用处 箱形图系列模板 第一个箱形图 复杂一点的图例 箱形图 概念 后面的图形都是一些专业的统计图形,当然也会是我们可视化的对象. 箱形图(Box-plot)又称为盒须图.盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图.因形状如箱子而得名.在各种领域也经常被使用,常见于​​品质管理​​.它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比 较.箱线图的绘制方法是:先找出一组数据的上边缘.下边缘.中位数和两个四分位数:然后, 连接两个四分位数画出箱体:再将

  • Python可视化神器pyecharts绘制柱状图

    目录 主题介绍 图表参数 主题详解 柱状图模板系列 海量数据柱状图动画展示 收入支出柱状图(适用于记账) 三维数据叠加 柱状图与折线图多维展示(同屏展示) 单列多维数据展示 3D柱状图 主题介绍 pyecharts里面有很多的主题可以供我们选择,我们可以根据自己的需要完成主题的配置,这样就告别了软件的限制,可以随意的发挥自己的艺术细胞了. 图表参数 ''' def add_yaxis( # 系列名称,用于 tooltip 的显示,legend 的图例筛选. series_name: str, #

  • Python疫情数据可视化分析

    目录 前言 功能函数 读取文件 更换列名,便于查看 全球疫情趋势 筛选出中国的数据 利用groupby按照省统计确诊死亡治愈病例的总和 确诊人数排名前15的国家 这里用pyecharts库画图,绘制的玫瑰图,rosetype 中国确诊人数前十的省 区域图 热力图 全球死亡人数地理分布情况 全球疫情频率直方图 其他图 陕西确诊病例饼图 陕西省确诊病例数据分布 中国治愈病例玫瑰图 前言 本项目主要通过python的matplotlib pandas pyecharts等库对疫情数据进行可视化分析 数

  • Python可视化神器pyecharts绘制折线图详情

    目录 折线图介绍 折线图模板系列 双折线图(气温最高最低温度趋势显示) 面积折线图(紧贴Y轴) 简单折线图(无动态和数据标签) 连接空白数据折线图 对数轴折线图示例 折线图堆叠(适合多个折线图展示) 二维曲线折线图(两个数据) 多维度折线图(颜色对比) 阶梯折线图 js高渲染折线图 折线图介绍 折线图和柱状图一样是我们日常可视化最多的一个图例,当然它的优势和适用场景相信大家肯定不陌生,要想快速的得出趋势,抓住趋势二字,就会很快的想到要用折线图来表示了.折线图是通过直线将这些点按照某种顺序连接起来

  • Python可视化程序调用流程解析

    目录 引言 安装 graphviz 工具 实战 引言 今天我们来分享一个 Python 领域的神级第三方库 -- pycallgraph,通过该库并结合 graphviz 工具,就可以非常方便的完成 Python 应用程序调用流程的可视化工作 我们先来看下效果图 怎么样,很是惊艳吧~ 下面我们就来一起完成这个可视化过程 安装 graphviz 工具 生成图片的过程,是依赖工具 graphviz 的,我们先进行下载安装 下载地址 www.graphviz.org/download/ 详细对于 gr

  • python manage.py runserver流程解析

    这篇文章主要介绍了python manage.py runserver流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 版本 python27 django 1.0 搭建可运行的环境 创建python27 虚拟环境 github 下载 django-1.0.tar.gz(1.0 版本的django) 解压 可以看到,有个 demo 在 examples 目录 把 django 目录拷贝到 examples 下面,这样 example 可以

  • python默认参数调用方法解析

    这篇文章主要介绍了python默认参数调用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最常见的一种形式是的是为一个或者多个参数指定默认值,这会创建一个可以使用比定义时允许的参数更少的参数调用的函数, def ask_ok(prompt, retries=4, reminder='Please try again!'): while True: ok = input(prompt) if ok in ('y', 'ye', 'yes'

  • Python文件操作基础流程解析

    一.文件操作的流程 1.打开文件 open('C:\a.txt\nb\c\d.txt') 解决方案一:推荐 open(r'C:\a.txt\nb\c\d.txt') 解决方案二: open('C:/a.txt/nb/c/d.txt') f=open(r'aaa/a.txt',mode='rt') # f的值是一种变量,占用的是应用程序的内存空间 2.操作文件: 读/写文件,应用程序对文件的读写请求都是在向操作系统发送系统调用,然后由操作系统控制硬盘把输入读入内存.或者写入硬盘 res=f.rea

  • Spring Shell应用程序开发流程解析

    向shell提供命令非常简单,需要学习的注解很少.该命令的实现风格与使用依赖注入的应用程序的开发类相同,您可以利用Spring容器的所有特性来实现您的命令类. spring-shell官网地址:https://projects.spring.io/spring-shell/  标记接口 创建命令的第一步是实现标记接口CommandMarker,并使用Spring的@Component注解对类进行注解(注意一个JIRA问题:提供@CliCommand元注解避免使用标记接口).使用helloworl

  • 使用Python打造一款间谍程序的流程分析

    知识点 这次我们使用python来打造一款间谍程序 程序中会用到许多知识点,大致分为四块 win32API 此处可以在MSDN上查看 Python基础重点在cpytes库的使用,使用方法请点击此处 C语言基础 Hook 程序的基本原理在于通过注册Hook,记录系统事件 那么什么是Hook呢 Hook 技术又叫做钩子函数,系统在调用函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递 注册Hook时我们需要先导入DLL

  • Python Flask微信小程序登录流程及登录api实现代码

    一.先来看看效果 接口请求返回的数据: 二.官方登录流程图 三.小程序登录流程梳理: 1.小程序端调用wx.login 2.判断用户是否授权 3.小程序端访问 wx.getUserInfo 4.小程序端js代码: wx.login({ success: resp => { // 发送 res.code 到后台换取 openId, sessionKey, unionId console.log(resp); var that = this; // 获取用户信息 wx.getSetting({ su

  • 采用React编写小程序的Remax框架的编译流程解析(推荐)

    Remax是蚂蚁开源的一个用React来开发小程序的框架,采用运行时无语法限制的方案.整体研究下来主要分为三大部分:运行时原理.模板渲染原理.编译流程:看了下现有大部分文章主要集中在Reamx的运行时和模板渲染原理上,而对整个React代码编译为小程序的流程介绍目前还没有看到,本文即是来补充这个空白. 关于模板渲染原理看这篇文章:https://www.jb51.net/article/132635.htm 关于remax运行时原理看这篇文章:https://www.jb51.net/artic

  • python代码实现小程序登录流程时序总结

    目录 官方文档 小程序登录 登录流程时序 说明: 注意: 小程序的登录总结 案例 官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系. 登录流程时序 说明: 调用wx.login()获取临时登录凭证code,并回传到开发者服务器. 调用auth.code2Sessi

  • 微信小程序调用PHP后台接口 解析纯html文本

    微信小程序调用PHP后台接口,解析纯html文本,效果图片预览 1.微信js动态传参: wx.request({ url: 'https://m.****.com/index.php/Home/Xiaoxxf/activity_detail?a_id='+options.id,//含富文本html data: { is_detail:1 }, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT heade

随机推荐