成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開(kāi)發(fā)
許多小伙伴看到這些帶 “python” 的概念可能一頭霧水,心想這跟我平時(shí)接觸到的 python 有什么區(qū)別嗎?這些到底是什么?

哈嘍大家好,我是咸魚(yú)。

當(dāng)我們說(shuō) Python 時(shí),通常指的是官方實(shí)現(xiàn)的 CPython,但還有很多比如 Pypy、Jython、MicroPython、Brython、RustPython 等 “python”。許多小伙伴看到這些帶 “python” 的概念可能一頭霧水,心想這跟我平時(shí)接觸到的 python 有什么區(qū)別嗎?這些到底是什么?

那么今天這篇文章將跟大家介紹相關(guān)的概念。

為什么會(huì)有這么多的 'python'

在開(kāi)始這篇文章之前,我們首先需要了解一個(gè)東西——python 是什么?

python 實(shí)際上是一個(gè)語(yǔ)言規(guī)范,這個(gè)規(guī)范定義了 Python 這門(mén)語(yǔ)言應(yīng)該具備哪些語(yǔ)言要素,應(yīng)當(dāng)能完成什么樣的任務(wù)。

Python 語(yǔ)言規(guī)范可以用不同的方式實(shí)現(xiàn),可以用 C 實(shí)現(xiàn),也可以用 C++、Java、C#、JavaScript,甚至使用 Python 自己實(shí)現(xiàn)。

python 最初是由龜哥(Guido van Rossum)用 C 編寫(xiě)的(CPython)。

在 python 大獲成功之后,許多其他的項(xiàng)目開(kāi)始用其他的編程語(yǔ)言或者不同的目標(biāo)去重新編寫(xiě) python,那么這些項(xiàng)目中的每一個(gè) python 實(shí)現(xiàn)都需要一個(gè)名字去區(qū)別于最初的那個(gè) python。

所以這就是 Pypy、MicroPython、Iron Python、Jython 和 Pyston 等豐富多彩的名字出現(xiàn)的原因。

各種 'python' 介紹

CPython

當(dāng)我們?cè)谟懻?python 的時(shí)候,99% 的情況下指的是 CPython,CPython 指的是用 C 編寫(xiě)的 pyhton 實(shí)現(xiàn)。

CPython 是標(biāo)準(zhǔn) python,可以將 Python 源碼編譯成 CPython 字節(jié)碼,由虛擬機(jī)解釋執(zhí)行這些字節(jié)碼。

一般情況下,CPython 是最常用的 python 實(shí)現(xiàn),大多數(shù)開(kāi)發(fā)人員基本不會(huì)使用到 CPython 之外的 python 實(shí)現(xiàn),甚至都不會(huì)去討論。

Pypy

Pypy 是最著名的 CPython 替代品,它是用 python 編寫(xiě)的(你沒(méi)聽(tīng)錯(cuò),用 python 編寫(xiě)的 python 實(shí)現(xiàn)),實(shí)際上 Pypy 是由 RPython 實(shí)現(xiàn)的,RPython 是 Python 的一個(gè)子集。

Pypy 使用即時(shí)編譯(JIT)技術(shù),可以在運(yùn)行時(shí)將 Python 代碼動(dòng)態(tài)地編譯成機(jī)器碼,從而提供更高的執(zhí)行速度。

雖然 Pypy 執(zhí)行速度要比 CPython 快,但是它的啟動(dòng)速度要比 CPython 慢,如果運(yùn)行的時(shí)間足夠長(zhǎng)的話(huà),就會(huì)變得越來(lái)越快,這使得它對(duì)于長(zhǎng)時(shí)間運(yùn)行的進(jìn)程特別有用,例如守護(hù)進(jìn)程、任務(wù)隊(duì)列和web服務(wù)器。

還有一個(gè)缺點(diǎn)就是 Pypy 與許多使用 C 編寫(xiě)的 Python 拓展庫(kù)不兼容。

雖然 Pypy 提供了一些與 CPython C API 兼容的接口,但并不能保證所有的 C 拓展都能無(wú)縫運(yùn)行。

Stackless Python

Stackless Python 是一種 Python 的變體,它是在 CPython 的基礎(chǔ)上進(jìn)行擴(kuò)展和改進(jìn)的版本。

與傳統(tǒng)的 CPython 相比,Stackless Python 提供了一些額外的特性,其中最重要的是支持協(xié)程(coroutine)和微線程(microthreads)。

協(xié)程是一種輕量級(jí)的線程,它允許在同一個(gè)線程內(nèi)的多個(gè)協(xié)程之間進(jìn)行切換,從而實(shí)現(xiàn)并發(fā)執(zhí)行

Stackless Python 的協(xié)程實(shí)現(xiàn)基于任務(wù)切換的概念,可以方便地編寫(xiě)異步、非阻塞的代碼,提高程序的并發(fā)性和響應(yīng)性。

微線程是 Stackless Python 中的另一個(gè)概念,它是一種更輕量級(jí)的線程單位,可以在一個(gè)進(jìn)程內(nèi)并發(fā)地執(zhí)行多個(gè)微線程,微線程與操作系統(tǒng)線程的切換開(kāi)銷(xiāo)較小,可以更高效地處理大量的并發(fā)任務(wù)。

Stackless Python 并不是 Python 的官方版本,它是由 Christian Tismer 和其他貢獻(xiàn)者開(kāi)發(fā)和維護(hù)的一個(gè)項(xiàng)目。

Stackless Python 的一個(gè)簡(jiǎn)單應(yīng)用:

Jython

Jython(Java Python 的縮寫(xiě))由 Java 編寫(xiě),運(yùn)行在 Java 虛擬機(jī)上( Java Virtual Machine,JVM),它允許開(kāi)發(fā)人員使用 Python 語(yǔ)言編寫(xiě)和執(zhí)行 Java 應(yīng)用程序,可以在Jython中直接訪問(wèn)Java類(lèi)和方法,它提供了對(duì) Java 類(lèi)和庫(kù)的無(wú)縫集成,使得開(kāi)發(fā)人員可以利用 Java 平臺(tái)的功能和生態(tài)系統(tǒng)。

Jython 廣泛應(yīng)用于 Java 開(kāi)發(fā)中,尤其是需要結(jié)合 Python 腳本和 Java 代碼的場(chǎng)景。

Jython 的一個(gè)簡(jiǎn)單應(yīng)用:

IronPython

IronPython 與 Jython 類(lèi)似,它是 .NET 框架的 python 實(shí)現(xiàn),它使用了微軟開(kāi)發(fā)的動(dòng)態(tài)語(yǔ)言運(yùn)行時(shí)(DLR)和公共語(yǔ)言運(yùn)行時(shí)(CLR),能夠與.NET框架無(wú)縫集成,開(kāi)發(fā)人員可以在 .NET 平臺(tái)上編寫(xiě)和執(zhí)行 Python 代碼,利用 .NET 框架的功能和資源。

IronPython 的一個(gè)簡(jiǎn)單應(yīng)用:

MicroPython

根據(jù)字面意思可以得知—— MicroPython 是一種精簡(jiǎn)版的 python 實(shí)現(xiàn),它只包含了 python 標(biāo)準(zhǔn)庫(kù)中的一小部分并經(jīng)過(guò)優(yōu)化,以適應(yīng)資源受限的環(huán)境,專(zhuān)為嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備而設(shè)計(jì)。

MicroPython具有以下特點(diǎn):

  • 小巧
  • 支持硬件交互
  • 垃圾回收和內(nèi)存管理
  • 交互式開(kāi)發(fā)
  • 跨平臺(tái)支持

總結(jié)一下

  • Python 實(shí)際上是一個(gè)語(yǔ)言規(guī)范,可以用不同的方式實(shí)現(xiàn)
  • 為了能夠?qū)崿F(xiàn)在特定的應(yīng)用場(chǎng)景中具有不同的優(yōu)勢(shì)和用途,開(kāi)發(fā)人員用其他語(yǔ)言設(shè)計(jì)了不同的 python 實(shí)現(xiàn)
  • CPython 是最常用的 Python 實(shí)現(xiàn),它是官方用 C 編寫(xiě)的 python 實(shí)現(xiàn)
  • 除此之外還有像 jython、Pypy、Iron Python、Stackless Python 等
責(zé)任編輯:趙寧寧 來(lái)源: 咸魚(yú)運(yùn)維雜談
相關(guān)推薦

2021-03-10 08:56:37

Zookeeper

2022-05-15 21:52:04

typeTypeScriptinterface

2021-07-27 07:31:16

JavaArrayList數(shù)組

2024-02-29 09:08:56

Encoding算法加密

2020-10-30 08:20:04

SD卡TF卡存儲(chǔ)

2018-12-17 12:30:05

Kubernetes存儲(chǔ)存儲(chǔ)卷

2020-03-03 17:35:09

Full GCMinor

2023-02-27 15:46:19

數(shù)據(jù)元元數(shù)據(jù)

2018-05-22 16:24:20

HashMapJavaJDK

2021-02-08 23:47:51

文件存儲(chǔ)塊存儲(chǔ)對(duì)象存儲(chǔ)

2025-05-12 08:40:00

前端監(jiān)控DOM

2016-11-04 12:51:46

Unix網(wǎng)絡(luò)IO 模型

2024-11-04 00:00:03

viewportDOMSPA

2022-02-25 09:14:33

類(lèi)變量共享實(shí)例變量

2021-11-09 06:01:35

前端JITAOT

2020-11-11 07:32:18

MySQL InnoDB 存儲(chǔ)

2023-04-11 15:57:49

JavaScriptCSSHTML

2021-01-13 08:10:26

接口IEnumeratorIEnumerable

2021-02-14 22:33:23

Java字符字段

2019-11-21 14:22:12

WiFiWLAN區(qū)別
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 视频一区在线观看 | av免费电影在线 | 亚洲国产精品一区二区久久 | 一区免费 | 欧美二区在线 | 久久精品一 | 欧美韩一区二区三区 | 先锋资源在线 | 久草日韩 | 韩日视频在线观看 | 羞羞的视频免费观看 | 永久www成人看片 | 中文字幕一区二区三区在线观看 | 国产精品爱久久久久久久 | 欧美久久久 | 在线日韩 | 99久久视频 | 久久国产精品久久国产精品 | 91精品国产综合久久久久久蜜臀 | 国产日韩欧美精品一区二区 | 日韩中文字幕高清 | 国产精品久久久久久福利一牛影视 | 91精品国产综合久久久久久蜜臀 | 国产精品视频免费播放 | 国产精品视频一区二区三区, | 久久免费视频观看 | 亚洲精品久久久久久一区二区 | 免费国产精品久久久久久 | 黄色日批视频 | 99精品一级欧美片免费播放 | 91在线观看免费视频 | 第四色影音先锋 | 成人欧美一区二区三区在线播放 | 在线看av网址 | 久久久这里都是精品 | 亚洲成av人片在线观看无码 | 日韩av视屏| 日本久久网站 | 日韩精品av一区二区三区 | 日本一区二区在线视频 | 天天干国产 |