有人说:一个人从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博客


一边赶路,一边寻找出路,希望大家在每个幸福的日子里,都能快乐前行。


最流行的 6 款 Python 解释器相关推荐

  1. 最受欢迎的7个Python解释器

    Python是计算机培训和软件开发中最受欢迎的编程语言之一.Python易于入门,没有编程知识的初学者或新手也可以从Python开始.Python在机器学习和深度学习算法研究及应用上具备压倒性的优势, ...

  2. 推荐一款Python编辑器,集Pycharm和Sublime优点于一身的王者

    推荐一款Python编辑器,集Pycharm和Sublime优点于一身的王者 编程里面的编辑器就像是武林大会里面的高手,每一年都有新秀,黑马出现!比如有练习霸道的天罡之气的榜首Pycharm,力量雄厚 ...

  3. python用什么编译器-15款Python编辑器的优缺点,别再问我quot;选什么编辑器”啦

    本文介绍了多个 Python IDE,并评价其优缺点.读者可以参考此文列举的 Python IDE 列表,选择适合自己的编辑器. 写 Python 代码最好的方式莫过于使用集成开发环境(IDE)了.它 ...

  4. 强推10款Python常用的开发工具

    要熟练使用python解决各种问题,开发工具必不可少,其中就包括IDE或者代码编辑器,或者集成的开发编辑器(IDE),一个好的开发工具可以让你事半功倍,接下来主要介绍python的一些常用的开发工具. ...

  5. python视频课程推荐-听说程序员都在用,5款Python开发工具推荐

    很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效.今天,我就把Python程序员使用 ...

  6. 学python用什么软件开发-5款Python程序员高频使用开发工具推荐

    很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效.今天,我就把Python程序员使用 ...

  7. python编程工具p-5款Python程序员高频使用开发工具推荐

    很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效.今天,我就把Python程序员使用 ...

  8. 开源 python_8款Python GUI开源框架,谁才是你的最爱?

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文千锋武汉Python培训小编将推荐一些Python GUI框架,希望对你有所帮助. 1.Python的UI开发工具包 Kivy Kiv ...

  9. python程序员编辑器_5款Python程序员高频使用开发工具推荐

    很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效.今天,我就把Python程序员使用 ...

  10. python语言支持苹果系统吗_Mac系统上的一款Python编程平台

    原标题:Mac系统上的一款Python编程平台 Python for Mac是Mac系统上的一款Python编程平台,由IDLE与Python Launcher两部分组成.Python支持多种编程技术 ...

最新文章

  1. 路由与交换 基础 1:组播
  2. 去云南品味彝族的砣砣肉
  3. Ubuntu 安装 QQ
  4. 数字信号与数字电路 数制与码制
  5. Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解...
  6. 341. 扁平化嵌套列表迭代器
  7. DreamFactory入门指南
  8. pro git学习笔记 4
  9. Node.js连接mysql报加密方式错误解决方案
  10. 生活中的思维风暴——读《谁是谷歌想要的人才》精彩题目小记(二)
  11. 使用迅捷PDF编辑器免费去除pdf水印
  12. 供应商TOP10榜单!车载前装激光雷达进入规模化上车关键期
  13. 超微服务器主板型号,Supermicro超微主板X10SRL-FLGA-2011,单路入门级服务器主板
  14. 在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)
  15. 09、Non-Black-Box ZK(Barak‘s protocol)--Alon Rosen
  16. (数据结构)二叉树中序遍历
  17. 画火柴人动画的手机软件_火柴人动漫制作软件下载-火柴人动漫制作手机中文版 v2.1.4_5577安卓网...
  18. Android开源项目汇总20150712更新
  19. 无聊的程序员教你如何使用十几行代码练就单身20年的手速(文末彩蛋)
  20. 用 Python 分析各国人口性别比例,原来单身不是我的错

热门文章

  1. 【软件下载】Axure10正式版(含汉化包)
  2. 怎样制作动图gif?GIF生成器帮你一键制作gif
  3. 基于RV1126平台imx291分析 --- mipi-csi-phy注册
  4. 通过Everything 快速搭建局域网内文件服务器
  5. Eclipse中快速查找类或代码
  6. unity后期处理插件post process超级后期滤镜
  7. 用友u8怎么导出凭证_用友软件如何导出凭证模板?
  8. mysql官网下载驱动包
  9. CANoe下载地址以及CAN Demo 16的下载与激活,并附录所有CANoe软件版本
  10. mybatis代码自动生成工具-MyBatis Generator