Python 总体架构
在最高的层次上,Python 的整体架构可以分为四个主要的部分,整个架构如图 1 所示。
在左边,是 Python 提供的大量的模块,库以及用户自定义的模块。比如在执行 import os 时,这个 os 就是 Python 内建的模块,当然用户还可以通过自定义模块来扩展 Python 系统。
在图的右边,是 Python 的运行时环境,包括对象/类型系统(Object/Type structures
),内存分配器(Memory Allocator
)和运行时状态(Current State of Python
)。运行时状态维护了解释器在执行字节码时在不同的状态之间切换的动作,我们可以将它视为一个巨大而复杂的有穷状态机。内存分配器则全权负责 Python 中创建对象时对内存的申请工作,实际上它就是 Python 运行时与 C 中 malloc 的一层接口。而对象/类型系统则包含了 Python 中存在的各种内建对象,比如整数,list 和 dict 等等
在中间的部分,可以看到 Python 的核心,解释器(interpreter)。在解释器中,箭头的方向指示了 Python 运行时的数据流方向。其中 Scanner 对应词法分析,将文件输入的 Python 源代码或从命令行输入的一行行 Python 代码切分为一个一个的 token;Parser 对应语法分析部分,在 Scanner 的分析结果上进行语法分析,建立抽象语法树(AST);Compiler 是根据建立的 AST 生成指令集合— —Python 字节码(byte code),就像 Java 编译器和 C#编译器所做的那样;最后由 Code Evaluator 来解释并执行这些字节码。因此,Code Evaluator 又可以被称为执行引擎。
图中,在 Interpreter 与右边的对象/类型系统,内存分配器之间的箭头表示“使用”关系;而与运行时状态之间的箭头表示修改关系,即 Python 在执行的过程中会不断地修改当前解释器所处的状态,在不同的状态之间切换。
Python 总体架构相关推荐
- python爬虫架构师之路_一位资深 架构师大牛给予Java技术提升的学习路线建议
一位资深 架构师大牛给予Java技术提升的学习路线建议 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素 ...
- [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构
[源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 文章目录 [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 0x00 摘要 0x01使用 1.1 ...
- MRS IoTDB时序数据库的总体架构设计与实现
MRS IoTDB时序数据库的总体架构设计与实现 MRS IoTDB是华为FusionInsight MRS大数据套件最新推出的时序数据库产品,其领先的设计理念在时序数据库领域展现出越来越强大的竞争力 ...
- python解释器源码 pdf_《python解释器源码剖析》第0章--python的架构与编译python
本系列是以陈儒先生的<python源码剖析>为学习素材,所总结的笔记.不同的是陈儒先生的<python源码剖析>所剖析的是python2.5,本系列对应的是python3.7. ...
- TVM 各个模块总体架构
TVM 各个模块总体架构 Deploy Deep Learning Everywhere Existing Deep Learning Frameworks Limitations of Existi ...
- Dubbo的总体架构
Dubbo的总体架构,如图所示: Dubbo框架设计一共划分了10个层,最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层.图中左边淡蓝背景的为服务消费方使 ...
- GT Transceiver的总体架构梳理
前言 对于7系列的FPGA,共有3个系列,每个系列都有各自的高速收发器,称为吉比特收发器,即Gigabit Transceiver,简称为GT. 每个系列的GT叫法略有不同,分别为: A7 的GTP ...
- 5G NR - 总体架构与物理层
一 NR总体架构与功能划分 1.1 总体架构 NG-RAN节点包含两种类型: l gNB:提供NR用户平面和控制平面协议和功能 l ng-eNB:提供E-UTRA用户平面和控制平面协议和功能 gN ...
- 中小型研发团队架构实践:电商如何做企业总体架构?
http://www.infoq.com/cn/articles/architecture-practice-09-enterprise-architecture?utm_source=infoq&a ...
- 天龙源码框架分析_MySQL8-InnoDB总体架构和运行机制的系统分析(上)
1. 前文回顾:四个阶段和两种方法 首先让我们回顾下,在上一篇文章介绍的MySQL8代码分析的四个阶段和两种方法. 四个阶段: 借鉴瀑布式软件开发流程,我们将从熟悉MySQL的使用和运维,到吃透MyS ...
最新文章
- ROS创建工作空间与节点
- Ubuntu 16.04 GNOME在桌面左侧添加启动器(Launcher)
- Alpha 冲刺 (7/10)
- flex的12个属性
- android开发工具下载
- mybatis学习(28):获取自增id方式二(在全局中配置setting选项)
- 【转】ubuntu 开机sudo启动应用程序
- Tomcat 中文路径乱码
- LIB BFD, the Binary File Descriptor Library
- 音乐计算机官方.,Boom音乐电脑版
- python 发邮件 timeout_python3 发送邮件 出现的问题(新手)
- python print return_对python中return和print的一些理解
- J2EE框架DDoS漏洞预警公告
- 明华澳汉 sle_4442 卡 读写
- python爬虫时爬虫爬数据时出现“访问本页面,请开启JavaScript并刷新该页”
- java算法合集-九阳神功第三式滑动窗口
- 领导带好团队需要有的3个能力
- 讯飞、有道、谷歌、微软语音sdk集成总结
- ES学习构建EKL海量日志分析平台
- html5学习开发指南
热门文章
- easyui 删除数据表格
- Silverlight入门
- android mp3文件图片,android 完美获取音乐文件中的专辑图片并显示
- python mysql创建表日期型_python 操作mysql,按照当前时间建立表,无法创建表..
- Android 加载网页进度条
- fastmock模拟常见数据结构
- diff 比较文件异同命令
- 小腹下面是什么部位_产后新妈妈去掉大肚腩,恢复平坦小腹,不妨试试这4个动作...
- python关于csv的查询系统_使用Python对csv文件操作
- jq获取验证码成功之后弹出的提示框_验证码填写错误,请重新填写。。。