国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了CPython, Pypy, MicroPython...還在傻傻分不清楚?。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

哈嘍大家好,我是咸魚

當(dāng)我們說 Python 時(shí),通常指的是官方實(shí)現(xiàn)的 CPython

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

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

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

參考鏈接:

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

為什么會有這么多的 “python”

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

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

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

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

在 python 大獲成功之后,許多其他的項(xiàng)目開始用其他的編程語言或者不同的目標(biāo)去重新編寫 python

那么這些項(xiàng)目中的每一個(gè) python 實(shí)現(xiàn)都需要一個(gè)名字去區(qū)別于最初的那個(gè) python(龜哥寫的那個(gè))

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

各種 "python" 介紹

CPython

當(dāng)我們在討論 python 的時(shí)候,99% 的情況下指的是 CPython,CPython 指的是用 C 編寫的 pyhton 實(shí)現(xiàn)

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

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

Pypy

Pypy 是最著名的 CPython 替代品,它是用 python 編寫的(你沒聽錯(cuò),用 python 編寫的 python 實(shí)現(xiàn))

實(shí)際上 Pypy 是由 RPython 實(shí)現(xiàn)的,RPython 是 Python 的一個(gè)子集

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

雖然 Pypy 執(zhí)行速度要比 CPython 快,但是它的啟動速度要比 CPython 慢,如果運(yùn)行的時(shí)間足夠長的話,就會變得越來越快

這使得它對于長時(shí)間運(yùn)行的進(jìn)程特別有用,例如守護(hù)進(jìn)程、任務(wù)隊(duì)列和web服務(wù)器

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

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

Stackless Python

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

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

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

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

微線程是 Stackless Python 中的另一個(gè)概念,它是一種更輕量級的線程單位,可以在一個(gè)進(jìn)程內(nèi)并發(fā)地執(zhí)行多個(gè)微線程

微線程與操作系統(tǒng)線程的切換開銷較小,可以更高效地處理大量的并發(fā)任務(wù)

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

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

import stackless

# 定義一個(gè)協(xié)程函數(shù)
def task(name):
    print("Running task:", name)

    # 模擬任務(wù)執(zhí)行
    stackless.sleep(1)
    print("Task", name, "completed")

# 創(chuàng)建協(xié)程
task1 = stackless.tasklet(task)("Task 1")
task2 = stackless.tasklet(task)("Task 2")

# 運(yùn)行協(xié)程調(diào)度器
stackless.run()

Jython

Jython(Java Python 的縮寫)由 Java 編寫,運(yùn)行在 Java 虛擬機(jī)上( Java Virtual Machine,JVM)

它允許開發(fā)人員使用 Python 語言編寫和執(zhí)行 Java 應(yīng)用程序,可以在Jython中直接訪問Java類和方法

它提供了對 Java 類和庫的無縫集成,使得開發(fā)人員可以利用 Java 平臺的功能和生態(tài)系統(tǒng)

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

jython 的一個(gè)簡單應(yīng)用:

# 導(dǎo)入Java類
from java.util import ArrayList

# 創(chuàng)建一個(gè)Java ArrayList對象
list = ArrayList()

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

# 使用Python的for循環(huán)遍歷列表
for item in list:
    print(item)

IronPython

IronPython 與 Jython 類似,它是 .NET 框架的 python 實(shí)現(xiàn)

它使用了微軟開發(fā)的動態(tài)語言運(yùn)行時(shí)(DLR)和公共語言運(yùn)行時(shí)(CLR),能夠與.NET框架無縫集成

開發(fā)人員可以在 .NET 平臺上編寫和執(zhí)行 Python 代碼,利用 .NET 框架的功能和資源

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

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

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

# 創(chuàng)建窗體類
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!"

# 創(chuàng)建應(yīng)用程序并運(yùn)行窗體
Application.Run(MyForm())

MicroPython

根據(jù)字面意思可以得知—— MicroPython 是一種精簡版的 python 實(shí)現(xiàn)

它只包含了 python 標(biāo)準(zhǔn)庫中的一小部分并經(jīng)過優(yōu)化,以適應(yīng)資源受限的環(huán)境,專為嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備而設(shè)計(jì)

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

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

總結(jié)一下

  • Python 實(shí)際上是一個(gè)語言規(guī)范,可以用不同的方式實(shí)現(xiàn)

  • 為了能夠?qū)崿F(xiàn)在特定的應(yīng)用場景中具有不同的優(yōu)勢和用途,開發(fā)人員用其他語言設(shè)計(jì)了不同的 python 實(shí)現(xiàn)

  • CPython 是最常用的 Python 實(shí)現(xiàn),它是官方用 C 編寫的 python 實(shí)現(xiàn)

  • 除此之外還有像 jython、Pypy、Iron Python、Stackless Python 等文章來源地址http://www.zghlxwxcb.cn/news/detail-526268.html

到了這里,關(guān)于CPython, Pypy, MicroPython...還在傻傻分不清楚?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • VR、AR、MR、CR,虛擬現(xiàn)實(shí)傻傻分不清楚

    VR、AR、MR、CR,虛擬現(xiàn)實(shí)傻傻分不清楚

    感覺不知道什么是VR就OUT了 其實(shí)除了VR之外,還有AR、MR、CR等外形類似 技術(shù)含量更高的頭戴式設(shè)備,那么問題來了,這些*R們有哪些區(qū)別? ? vr是由美國VPL公司創(chuàng)建人拉尼爾(Jaron?Lanier)在20世紀(jì)80年代初提出的。其具體內(nèi)涵是:綜合利用計(jì)算機(jī)圖形系統(tǒng)和各種現(xiàn)實(shí)及控制等接口

    2024年02月08日
    瀏覽(23)
  • 汽車虛擬ECU和MCU硬件虛擬化,傻傻分不清楚

    汽車虛擬ECU和MCU硬件虛擬化,傻傻分不清楚

    目錄 1.概述 2.汽車虛擬ECU 3.汽車MCU虛擬化功能 4.小結(jié) 近幾年,隨著智能網(wǎng)聯(lián)汽車普及,車型的更新迭代速度進(jìn)一步提升,功能開發(fā)工程師希望在能夠在硬件成型前驗(yàn)證軟件功能,意味著汽車控制器的功能開發(fā)也在不斷左移。 為此業(yè)內(nèi)出現(xiàn)了對ECU進(jìn)行虛擬化以加速開發(fā)的呼聲

    2024年01月25日
    瀏覽(24)
  • 數(shù)據(jù)中臺、數(shù)據(jù)平臺、數(shù)據(jù)湖、數(shù)據(jù)倉庫傻傻分不清楚?帶你一文理清

    隨著數(shù)字經(jīng)濟(jì)蓬勃發(fā)展,數(shù)字化轉(zhuǎn)型步伐不斷加快,大數(shù)據(jù)技術(shù)的不斷更新與迭代,數(shù)據(jù)技術(shù)加速創(chuàng)新融合應(yīng)用,在數(shù)字化發(fā)展的不同階段,數(shù)據(jù)管理工具歷經(jīng)了從數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)集市與數(shù)據(jù)湖,再到大數(shù)據(jù)平臺與如今的數(shù)據(jù)中臺的發(fā)展歷程。大數(shù)據(jù)平臺、數(shù)據(jù)湖、

    2024年04月26日
    瀏覽(26)
  • 【Mysql 存儲過程 Or 存儲函數(shù) 傻傻分不清? 】

    【Mysql 存儲過程 Or 存儲函數(shù) 傻傻分不清? 】

    MySQL的存儲函數(shù)(自定義函數(shù))和存儲過程都是用于存儲SQL語句的。但是什么時(shí)候用什么呢?是不是總是傻傻的分不清? 本文來詳細(xì)的講一下存儲函數(shù) 和存儲過程 ,以后再也不會迷糊。 MySQL的存儲過程和函數(shù)都是一系列SQL語句的集合,調(diào)用時(shí)一次性執(zhí)行這些SQL語句。但是它

    2024年02月09日
    瀏覽(21)
  • 迷不迷糊?前后端、三層架構(gòu)和MVC傻傻分不清

    迷不迷糊?前后端、三層架構(gòu)和MVC傻傻分不清

    現(xiàn)在的項(xiàng)目都講究前后端分離,那到底什么是前后端,前后端和以前的MVC以及三層架構(gòu)啥關(guān)系呢?今天就這個(gè)問題展開一下,方面后面的學(xué)習(xí),因?yàn)榍懊嬷v的jsp、servlet和javabean根據(jù)實(shí)例,基本上有一個(gè)框架的理解了,誰處理什么業(yè)務(wù)也大概清楚了,而且也提到了MVC這個(gè)東西,

    2024年03月08日
    瀏覽(101)
  • SAS硬盤和SATA硬盤傻傻分不清?不懂的看這里

    SAS硬盤和SATA硬盤傻傻分不清?不懂的看這里

    一、SAS SSD與SATA SSD的主要差異: 01 接口形態(tài)的差異 SAS(Serial Attached SCSI)即串行連接SCSI,和SATA(Serial ATA)相同,采用串行技術(shù)以獲得更高的傳輸速度。SAS 具備2對收發(fā)通道,而SATA 僅有1對收發(fā)通道, SAS的接口技術(shù)可以向下兼容SATA,但SATA不可以反向兼容SAS接口。 SAS接口的設(shè)

    2024年02月04日
    瀏覽(67)
  • VR和AR傻傻分不清,一句話給你講明白。

    VR和AR傻傻分不清,一句話給你講明白。

    不說廢話,直接說結(jié)論,虛擬現(xiàn)實(shí)(Virtual Reality,VR)和增強(qiáng)現(xiàn)實(shí)(Augmented Reality,AR)。如果現(xiàn)實(shí)是A,虛擬是B,那么VR=B,AR=A+B,就這簡單,不走彎彎繞,有興趣的的往下看。 虛擬現(xiàn)實(shí)(Virtual Reality,VR)和增強(qiáng)現(xiàn)實(shí)(Augmented Reality,AR)是兩種不同的技術(shù)和體驗(yàn),它們在現(xiàn)實(shí)

    2024年02月22日
    瀏覽(18)
  • 讓我看看,還有誰分不清楚GPT和Chat GTP

    讓我看看,還有誰分不清楚GPT和Chat GTP

    ? ? ? ? GPT(Generative Pre-trained Transformer)是由OpenAI推出的一種基于Transformer的自然語言處理模型,它是在大規(guī)模的無監(jiān)督語言預(yù)訓(xùn)練下,使用有監(jiān)督微調(diào)的方式來完成各種自然語言處理任務(wù)的。GPT的訓(xùn)練數(shù)據(jù)主要來源于互聯(lián)網(wǎng)上的大量文本,包括維基百科、新聞報(bào)道、小說等

    2024年02月11日
    瀏覽(20)
  • GIL 鎖或?qū)⒃?CPython 中成為可選項(xiàng)

    GIL 鎖或?qū)⒃?CPython 中成為可選項(xiàng)

    哈嘍大家好,我是咸魚 幾天前有媒體報(bào)道稱,經(jīng)過多次辯論,Python 指導(dǎo)委員會打算批準(zhǔn)通過 PEP 703 提案, 讓 GIL(全局解釋器)鎖在 CPython 中成為一個(gè)可選項(xiàng) PEP 703 提案主要目標(biāo)是使 GIL 變成可選項(xiàng),即允許 Python 解釋器在特定情況下不使用GIL 這將允許 Python 在多核處理器上

    2024年02月13日
    瀏覽(16)
  • 云計(jì)算實(shí)戰(zhàn)系列二十二(Python編程I)_pypy 掃描依賴包(1)

    云計(jì)算實(shí)戰(zhàn)系列二十二(Python編程I)_pypy 掃描依賴包(1)

    先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前! 因此收集整理了一份《2024年最新網(wǎng)絡(luò)安全全套學(xué)習(xí)資料》

    2024年04月22日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包