最流行的 6 款 Python 解释器

news2024/11/29 1:48:02

640?wx_fmt=gif  

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTcwNjU4,size_16,color_FFFFFF,t_70

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。

生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。 


Python 是最流行的编程语言之一,它需要解释器来执行 Python 代码定义的指令。与直接编译成机器代码的其他语言相比,由解释器负责读取 Python 代码并将其指令转换为 CPU 执行相关操作。本文将与大家共同探讨2022 年最流行的 6 款 Python 解释器。

在谈论 Python 解释器时,通常指 /usr/bin/python 二进制文件,可以执行 .py 文件。然而,解释器只是一项任务。在 CPU 上真正执行一行 Python 代码之前,涉及到以下四个步骤:

  • Lexing:将人造源代码转换为一系列逻辑实体, 即所谓的词法标记。
  • 解析:在解析器中,检查词法标记的语法和语法, 解析器的输出是抽象语法树 (AST)。
  • 编译:基于 AST,编译器创建 Python 字节码, 字节码由非常基本的、独立于平台的指令组成。
  • 解释:解释器获取字节码并执行指定的操作。

如上述所见,在采取任何实际行动之前需要执行很多步骤,因此仔细研究不同的解释器十分有意义。

1. CPython

CPython 是 Python 的参考实现,也是许多系统的默认实现。顾名思义,CPython 是用 C 编写的。可以用 C 编写扩展,从而使基于 C 的 widley 库代码对 Python 可用。CPython 可用于多种平台,包括 ARM、iOS 和 RISC。然而,作为该语言的参考实现,CPython 经过了仔细优化,并不注重速度。

2. Pyston

Pyston 是 CPython 解释器的一个分支,它实现了性能优化。该项目将自己描述为标准 CPython 解释器的替代品,用于大型、真实世界的应用程序,加速潜力高达30%。由于缺乏兼容的二进制程序包,Pyston 程序包必须在下载过程中重新编译。

3. PyPy

PyPy 是一个针对 Python 的实时(JIT)编译器,用 RPython 编写。RPython 是 Python 的一个静态类型化子集。与 CPython 解释器不同,PyPy 编译成可由 CPU 直接执行的机器码。PyPy 是 Python 开发人员的天地,可在其更轻松地试验一些新功能。

与 CPython相比,PyPy 的实现更快。由于 JIT 编译器的性质,只有运行了很长时间的应用程序才能从缓存中受益。PyPy 可以作为 CPython 的替代品。不过,这也有一个缺点。C 扩展模块大多受支持,但它们的运行速度比 Python 模块慢。PyPy 扩展模块是用 Python (而不是 C)编写的,因此 JIT 编译器能够对它们进行优化。只要应用程序不依赖于不兼容的模块,PyPy 就是 CPython 的绝佳替代品。在项目网站上有一个专门的页面,详细描述了CPython的区别,更多详情请参阅:PyPy和CPython之间的区别。

4. RustPython

顾名思义,RustPython 是一种用 Rust 编写的 Python 解释器。尽管 Rust 编程语言很新,但它已经越来越受欢迎,是 C 和 C++ 的继任者。默认情况下,RustPython 的行为类似于 CPython 的解释器,还有一个 JIT 编译器,可以选择启用该编译器。另一个很好的特性是,Rust 工具链允许直接编译为 WebAssembly,允许完全在浏览器中运行解释器,可在 rustpython.githorb.com/demo 上找到它的演示。

5. Stackless Python

Stackless Python 将自己描述为 Python 编程语言的增强版本。该项目基本上是 CPython 解释器的一个分支,它为语言添加了微线程、通道和调度器。微线程允许将代码组织到微线程中,从而可以并行运行代码。这种方法类似于使用 greenlet 模块的绿色通道。通道可用于微线程之间的双向通信。Stackless Python 的一个著名用户是 MMORPG Eve Online。

6. Micro Python

如果以微控制器为目标,那么 MicroPython 是您的令一种选择。这是一个精简的实现,只需要 16kB 的 RAM 和 256kB 的空间。由于它所针对的嵌入式环境,MicroPython 的标准库只是 CPython 扩展 STL 的一个子集。无论是为了开发和测试,还是作为一个轻量级的替代方案,MicroPython 也可以在普通的 x86 和 x64 机器上运行。MicroPython 可用于 Linux、Windows 以及许多微控制器。

从设计上来说,Python 是一种固有的慢语言。根据任务的不同,解释器之间的表现存在显著差异。如想了解哪种解释器是某项任务的最佳选择,请参阅 pybenchmarks.org 。使用解释器的另一种选择是将 Python 二进制代码直接编译为机器代码。例如,Nuitka 就是这样一个项目,它可以将 Python 代码编译成 C 代码,并将 C 代码编译成机器代码,再使用普通 C 编译器将 C 代码编译为机器代码。

总结

对于快速原型化和任务自动化来说,Python 是一种很棒的语言。此外,它很容易学习,非常适合初学者。如果您通常使用 CPython,那么看看您的代码在另一个解释器上的行为可能会很有趣。如果您使用 Fedora,可以很容易地测试其他一些解释器,因为管理器已经提供了正确的二进制文件。有关更多信息,请访问 fedora.developer.org。

 这些程序员职场“潜规则”,让你少走5年弯路_【官方推荐】唐城的博客-CSDN博客


   Ã¥Â®Â«Ã¥Â´Ã©ÂªÃ©Â¾Ã§Â«Ã¨Â¡Â¨Ã¦Ã¥|é¾ç«gifå¾è¡¨æåä¸è½½å¾ç一边赶路,一边寻找出路,希望大家在每个幸福的日子里,都能快乐前行。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双向长短期记忆网络(BiLSTM)详解

双向长短期记忆网络(BiLSTM)详解 一、前言 在学习BiLSTM之前,首先需要对RNN和LSTM有一定的了解,可以参考本人的博客:详细讲解RNNLSTMTree_LSTM(Tree-Long Short Term Memory)基于树状长短期记忆…

22、短信登录(隐藏用户的敏感信息)

短信登录(隐藏用户的敏感信息) 我们返回给前端的信息太多了 问题:为什么我们这里全返回了呢? 我们这里是直接从userHoler里获取用户后就直接返回。 所以我们冲userHoler里取出来的信息就是完整的。 2、userHoler从哪里来&#x…

RSA与AES加密

目录 一、非对称加密和RSA 1.非对称秘钥 2.RSA加密的核心 3.Python中实现RSA加密解密 二、HTTPS通信过程 三、对称加密和AES 1.AES简介 2.Python中实现AES加解密 一、非对称加密和RSA 1.非对称秘钥 https://blog.csdn.net/gao131360144/article/details/79966094HTTPS&…

北理工嵩天Python语言程序设计笔记(6 函数和代码复用)

前言 本文是对《北理工 嵩天/黄天宇/礼欣 Python语言程序设计》的学习笔记,供自己查阅使用。 文章目录 北理工嵩天Python语言程序设计笔记(目录)北理工嵩天Python语言程序设计笔记(2 Python基本语法元素)北理工嵩天…

3GPP R17空闲态省电特性

Paging Early Indication 为了进一步降低空闲态UE监听PDCCH的功耗,R17提出Paging Early Indication(PEI)方案。方案的主要思想是在PO(Paging Occasion)之前插入一个PEI-O(PEI Occasion),UE在解调到PEI信息之后,再确定是否需要解调PO信息。其中…

FPGA帧差算法实现图像识别跟踪,Verilog代码讲解全网最细,提供两套工程源码

之前我写过一篇关于FPGA帧差算法实现图像识别跟踪的文章,可以参考一下FPGA帧差算法实现图像识别跟踪 但那篇文章讲得不够细,这里讲得细一点: 运动目标检测原理:先将RGB图像转为灰度图只取亮度分量y,如果一个物体是运动…

【C++】如何修改set的值

问题&#xff1a;尝试通过begin方法得到的迭代器去修改值&#xff0c;发现会报错。 set<string> st{"hello", "world", "good"}; set<string>::iterator it st.begin(); *it "test"; 原因&#xff1a;我们可以在源码里…

三层交换机(三层配置基础命令)

作者介绍&#xff1a; ♥️作者&#xff1a;小刘在C站 ♥️每天分享课堂笔记&#xff0c;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放。 目录 一.什么是三层交换机 二.为什么使用三层交换机 三.层交换机的原理 1.传统的mls 2.快速转…

文件的基本操作

文章目录创建文件删除文件打开文件关闭文件读文件写文件这些基本功能都是操作系统提供给应用程序的系统调用创建文件 提供的参数 所需的外存空间大小文件的存放路径文件名&#xff08;操作系统会有对应的默认名&#xff09; 操作系统做的工作 在外存中找文件所需的空间——空闲…

Python趣味算法入门 - 百钱百鸡

问题描述 中国古代数学家张邱建在他的《算经》中提出了一个著名的“百钱百鸡问题”&#xff1a;一只公鸡值五钱&#xff0c;一只母鸡值三钱&#xff0c;三只小鸡值一钱&#xff0c;现在要用百钱买百鸡&#xff0c;请问公鸡、母鸡、小鸡各多少只&#xff1f; 分析 这也是经典问…

所见即所得即MySQL函数

✨✨hello&#xff0c;愿意点进来的小伙伴们&#xff0c;你们好呐&#xff01; &#x1f43b;&#x1f43b;系列专栏&#xff1a;【MySQL初阶】 &#x1f432;&#x1f432;本篇内容&#xff1a;MySQL函数的详解 &#x1f42f;&#x1f42f;作者简介:一名现大二的三非编程小白&…

【Spring】核心部分之IOC:通过列举代码例子,从底层刨析,深入源码,轻轻松松理解Spring的核心IOC,IOC有这一篇足以

IOC一&#xff0c;概念和原理1.概念&#xff1a;控制反转2.原理&#xff1a;&#xff08;xml解析&#xff0c;工厂模式&#xff0c;反射&#xff09;3.IOC接口&#xff1a;两个主要容器实现类&#xff08;加载xml配置文件&#xff09;二&#xff0c;操作Bean管理1.基于 xml 配置…

React - 实现瀑布流加载

React - 实现瀑布流加载一. 瀑布流实现1.1 处理重复请求问题一. 瀑布流实现 先来看下原本的效果&#xff0c;一次性加载完所有的信息然后展示&#xff1a; 其次&#xff0c;我们需要去监听这个滚轮的滚动事件&#xff0c;那么React页面就可以添加一个监听器&#xff1a; use…

SpringSecurity Oauth2实战 - 04 自定义AuthProvider实现登录认证

文章目录1. 搭建资源服务器1. Token存储配置类 TokenStoreAutoConfiguration2. 资源服务器配置类 ResourceServerAutoConfiguration3. 在META-INF/spring.factories文件下添加配置类2. 搭建授权服务器1. 密码加密配置类 PasswordEncodeConfig2. RestTemplateConfig3. 授权服务器…

k3s 离线部署指南

文章目录1. 简介2. Docker 手动部署镜像方式2.1 安装docker2.2 导入镜像2.3 安装 k3s2.4 查看3. Containerd 手动部署镜像方式3.1 导入镜像到 containerd 镜像列表3.2 授予可执行权限3.3 安装 K3s4. Containerd 私有镜像仓库方式4.1 配置 K3s 镜像仓库4.2 授予可执行权限4.3…

集合(Set)和有序集合(ZSet)的基本使用方法详解【Redis】

文章目录一. Redis中的集合(Set)1.1基本的一些操作1.1.1 smembers查看集合中的所有成员1.1.2 scard删除成员数量1.1.3 smove移动成员1.1.4 sinterstore 存储俩个集合的交集二.Redis中的有序集合(ZSet)2.1 基本的一些操作2.1.1 zadd添加1到多个成员2.1.2 zcount 返回指定分数区间…

【HarmonyOS】鸿蒙轻量级智能穿戴应用可以集成华为分析SDK吗?

1、问题描述 我们的项目是基于鸿蒙系统开发的轻量级智能穿戴应用&#xff0c;目前在做的主要是运动手表GT3。 我们在项目中使用了华为分析服务&#xff0c;但是在Build Hap时出现问题&#xff1a; 因此&#xff0c;我们想了解轻量级智能穿戴应用项目中是否能够集成华为分析服…

计算机毕业设计(附源码)python在线影评系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Leetcode-每日一题1106. 解析布尔表达式(DFS模拟栈)

题目链接&#xff1a;点击跳转 思路 方法一、DFS模拟栈 题目意思很简单让你去判断与或非布尔表达式的结果&#xff0c;我们可以看布尔表达式看成一棵树&#xff0c;需要我们解决的是从最底层的嵌套布尔表达式产生的结果不断向上的结果&#xff0c;如图&#xff1a; 既然他是…

云栖大会开源重磅升级!PolarDB-X v2.2: 企业级和国产化适配

2022 年云栖大会上&#xff0c;PolarDB-X 发布 2.2.0 版本&#xff0c;这是一个重要的里程碑版本&#xff0c;重点推出符合分布式数据库金融标准下的企业级和国产化适配&#xff0c;共包括八大核心特性&#xff0c;全面提升 PolarDB-X 分布式数据库在金融、通讯、政务等行业的普…