CPython, Pypy, MicroPython...还在傻傻分不清楚?

这篇具有很好参考价值的文章主要介绍了CPython, Pypy, MicroPython...还在傻傻分不清楚?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哈喽大家好,我是咸鱼

当我们说 Python 时,通常指的是官方实现的 CPython

但还有很多比如 Pypy、Jython、MicroPython、Brython、RustPython 等 “python”

许多小伙伴看到这些带 “python” 的概念可能一头雾水,心想这跟我平时接触到的 python 有什么区别吗?这些到底是什么

那么今天这篇文章将跟大家介绍相关的概念

参考链接:

What's the deal with CPython, Pypy, MicroPython, Jython...? (bitecode.dev)

为什么会有这么多的 “python”

在开始这篇文章之前,我们首先需要了解一个东西——python 是什么?

python 实际上是一个语言规范,这个规范定义了 Python 这门语言应该具备哪些语言要素,应当能完成什么样的任务

Python 语言规范可以用不同的方式实现,可以用 C 实现,也可以用 C++、Java、C#、JavaScript,甚至使用 Python 自己实现

python 最初是由龟哥(Guido van Rossum)用 C 编写的(CPython)

在 python 大获成功之后,许多其他的项目开始用其他的编程语言或者不同的目标去重新编写 python

那么这些项目中的每一个 python 实现都需要一个名字去区别于最初的那个 python(龟哥写的那个)

所以这就是 Pypy、MicroPython、Iron Python、Jython 和 Pyston 等丰富多彩的名字出现的原因

各种 "python" 介绍

CPython

当我们在讨论 python 的时候,99% 的情况下指的是 CPython,CPython 指的是用 C 编写的 pyhton 实现

CPython 是标准 python,可以将 Python 源码编译成 CPython 字节码,由虚拟机解释执行这些字节码

一般情况下,CPython 是最常用的 python 实现,大多数开发人员基本不会使用到 CPython 之外的 python 实现,甚至都不会去讨论

Pypy

Pypy 是最著名的 CPython 替代品,它是用 python 编写的(你没听错,用 python 编写的 python 实现)

实际上 Pypy 是由 RPython 实现的,RPython 是 Python 的一个子集

Pypy 使用即时编译(JIT)技术,可以在运行时将 Python 代码动态地编译成机器码,从而提供更高的执行速度

虽然 Pypy 执行速度要比 CPython 快,但是它的启动速度要比 CPython 慢,如果运行的时间足够长的话,就会变得越来越快

这使得它对于长时间运行的进程特别有用,例如守护进程、任务队列和web服务器

还有一个缺点就是 Pypy 与许多使用 C 编写的 Python 拓展库不兼容

虽然 Pypy 提供了一些与 CPython C API 兼容的接口,但并不能保证所有的 C 拓展都能无缝运行

Stackless Python

Stackless Python 是一种 Python 的变体,它是在 CPython 的基础上进行扩展和改进的版本

与传统的 CPython 相比,Stackless Python 提供了一些额外的特性,其中最重要的是支持协程(coroutine)和微线程(microthreads)

协程是一种轻量级的线程,它允许在同一个线程内的多个协程之间进行切换,从而实现并发执行

Stackless Python 的协程实现基于任务切换的概念,可以方便地编写异步、非阻塞的代码,提高程序的并发性和响应性

微线程是 Stackless Python 中的另一个概念,它是一种更轻量级的线程单位,可以在一个进程内并发地执行多个微线程

微线程与操作系统线程的切换开销较小,可以更高效地处理大量的并发任务

Stackless Python 并不是 Python 的官方版本,它是由 Christian Tismer 和其他贡献者开发和维护的一个项目

Stackless Python 的一个简单应用:

import stackless

# 定义一个协程函数
def task(name):
    print("Running task:", name)

    # 模拟任务执行
    stackless.sleep(1)
    print("Task", name, "completed")

# 创建协程
task1 = stackless.tasklet(task)("Task 1")
task2 = stackless.tasklet(task)("Task 2")

# 运行协程调度器
stackless.run()

Jython

Jython(Java Python 的缩写)由 Java 编写,运行在 Java 虚拟机上( Java Virtual Machine,JVM)

它允许开发人员使用 Python 语言编写和执行 Java 应用程序,可以在Jython中直接访问Java类和方法

它提供了对 Java 类和库的无缝集成,使得开发人员可以利用 Java 平台的功能和生态系统

Jython 广泛应用于 Java 开发中,尤其是需要结合 Python 脚本和 Java 代码的场景

jython 的一个简单应用:

# 导入Java类
from java.util import ArrayList

# 创建一个Java ArrayList对象
list = ArrayList()

# 向列表中添加元素
list.add("Hello")
list.add("World")

# 使用Python的for循环遍历列表
for item in list:
    print(item)

IronPython

IronPython 与 Jython 类似,它是 .NET 框架的 python 实现

它使用了微软开发的动态语言运行时(DLR)和公共语言运行时(CLR),能够与.NET框架无缝集成

开发人员可以在 .NET 平台上编写和执行 Python 代码,利用 .NET 框架的功能和资源

IronPython 的一个简单应用:

import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form, Button
from System.Drawing import Point

# 创建窗体类
class MyForm(Form):
    def __init__(self):
        self.Text = "IronPython Form Example"
        self.button = Button()
        self.button.Text = "Click Me"
        self.button.Location = Point(50, 50)
        self.button.Click += self.button_Click
        self.Controls.Add(self.button)

    def button_Click(self, sender, event):
        self.button.Text = "Clicked!"

# 创建应用程序并运行窗体
Application.Run(MyForm())

MicroPython

根据字面意思可以得知—— MicroPython 是一种精简版的 python 实现

它只包含了 python 标准库中的一小部分并经过优化,以适应资源受限的环境,专为嵌入式系统和物联网设备而设计

MicroPython具有以下特点:

  • 小巧
  • 支持硬件交互
  • 垃圾回收和内存管理
  • 交互式开发
  • 跨平台支持

总结一下

  • Python 实际上是一个语言规范,可以用不同的方式实现

  • 为了能够实现在特定的应用场景中具有不同的优势和用途,开发人员用其他语言设计了不同的 python 实现

  • CPython 是最常用的 Python 实现,它是官方用 C 编写的 python 实现

  • 除此之外还有像 jython、Pypy、Iron Python、Stackless Python 等文章来源地址https://www.toymoban.com/news/detail-526268.html

到了这里,关于CPython, Pypy, MicroPython...还在傻傻分不清楚?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 汽车虚拟ECU和MCU硬件虚拟化,傻傻分不清楚

    目录 1.概述 2.汽车虚拟ECU 3.汽车MCU虚拟化功能 4.小结 近几年,随着智能网联汽车普及,车型的更新迭代速度进一步提升,功能开发工程师希望在能够在硬件成型前验证软件功能,意味着汽车控制器的功能开发也在不断左移。 为此业内出现了对ECU进行虚拟化以加速开发的呼声

    2024年01月25日
    浏览(47)
  • VR、AR、MR、CR,虚拟现实傻傻分不清楚

    感觉不知道什么是VR就OUT了 其实除了VR之外,还有AR、MR、CR等外形类似 技术含量更高的头戴式设备,那么问题来了,这些*R们有哪些区别?   vr是由美国VPL公司创建人拉尼尔(Jaron Lanier)在20世纪80年代初提出的。其具体内涵是:综合利用计算机图形系统和各种现实及控制等接口

    2024年02月08日
    浏览(41)
  • 数据中台、数据平台、数据湖、数据仓库傻傻分不清楚?带你一文理清

    随着数字经济蓬勃发展,数字化转型步伐不断加快,大数据技术的不断更新与迭代,数据技术加速创新融合应用,在数字化发展的不同阶段,数据管理工具历经了从数据库、数据仓库、数据集市与数据湖,再到大数据平台与如今的数据中台的发展历程。大数据平台、数据湖、

    2024年04月26日
    浏览(40)
  • 【Mysql 存储过程 Or 存储函数 傻傻分不清? 】

    MySQL的存储函数(自定义函数)和存储过程都是用于存储SQL语句的。但是什么时候用什么呢?是不是总是傻傻的分不清? 本文来详细的讲一下存储函数 和存储过程 ,以后再也不会迷糊。 MySQL的存储过程和函数都是一系列SQL语句的集合,调用时一次性执行这些SQL语句。但是它

    2024年02月09日
    浏览(37)
  • 迷不迷糊?前后端、三层架构和MVC傻傻分不清

    现在的项目都讲究前后端分离,那到底什么是前后端,前后端和以前的MVC以及三层架构啥关系呢?今天就这个问题展开一下,方面后面的学习,因为前面讲的jsp、servlet和javabean根据实例,基本上有一个框架的理解了,谁处理什么业务也大概清楚了,而且也提到了MVC这个东西,

    2024年03月08日
    浏览(62)
  • SAS硬盘和SATA硬盘傻傻分不清?不懂的看这里

    一、SAS SSD与SATA SSD的主要差异: 01 接口形态的差异 SAS(Serial Attached SCSI)即串行连接SCSI,和SATA(Serial ATA)相同,采用串行技术以获得更高的传输速度。SAS 具备2对收发通道,而SATA 仅有1对收发通道, SAS的接口技术可以向下兼容SATA,但SATA不可以反向兼容SAS接口。 SAS接口的设

    2024年02月04日
    浏览(67)
  • VR和AR傻傻分不清,一句话给你讲明白。

    不说废话,直接说结论,虚拟现实(Virtual Reality,VR)和增强现实(Augmented Reality,AR)。如果现实是A,虚拟是B,那么VR=B,AR=A+B,就这简单,不走弯弯绕,有兴趣的的往下看。 虚拟现实(Virtual Reality,VR)和增强现实(Augmented Reality,AR)是两种不同的技术和体验,它们在现实

    2024年02月22日
    浏览(55)
  • 让我看看,还有谁分不清楚GPT和Chat GTP

            GPT(Generative Pre-trained Transformer)是由OpenAI推出的一种基于Transformer的自然语言处理模型,它是在大规模的无监督语言预训练下,使用有监督微调的方式来完成各种自然语言处理任务的。GPT的训练数据主要来源于互联网上的大量文本,包括维基百科、新闻报道、小说等

    2024年02月11日
    浏览(33)
  • GIL 锁或将在 CPython 中成为可选项

    哈喽大家好,我是咸鱼 几天前有媒体报道称,经过多次辩论,Python 指导委员会打算批准通过 PEP 703 提案, 让 GIL(全局解释器)锁在 CPython 中成为一个可选项 PEP 703 提案主要目标是使 GIL 变成可选项,即允许 Python 解释器在特定情况下不使用GIL 这将允许 Python 在多核处理器上

    2024年02月13日
    浏览(27)
  • 云计算实战系列二十二(Python编程I)_pypy 扫描依赖包(1)

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新网络安全全套学习资料》

    2024年04月22日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包