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

GIL 鎖或?qū)⒃?CPython 中成為可選項

這篇具有很好參考價值的文章主要介紹了GIL 鎖或?qū)⒃?CPython 中成為可選項。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

哈嘍大家好,我是咸魚

幾天前有媒體報道稱,經(jīng)過多次辯論,Python 指導(dǎo)委員會打算批準(zhǔn)通過 PEP 703 提案,讓 GIL(全局解釋器)鎖在 CPython 中成為一個可選項

PEP 703 提案主要目標(biāo)是使 GIL 變成可選項,即允許 Python 解釋器在特定情況下不使用GIL

GIL 鎖或?qū)⒃?CPython 中成為可選項

這將允許 Python 在多核處理器上更好地利用并行性,從而提高多線程程序的性能

PEP 703 提案建議新增一個配置項 --disable-gil ,加了這個選項之后就可以關(guān)閉 GIL 鎖,如果想要開啟 GIL 鎖,把 --disable-gil 去掉即可
GIL 鎖或?qū)⒃?CPython 中成為可選項
關(guān)于 PEP 703 提案的具體內(nèi)容有興趣的小伙伴們可以去看一下

PEP 703 提案:https://peps.python.org/pep-0703/

接下來我們來看下外媒的這篇報道吧!

原文:https://www.infoworld.com/article/3704248/python-moves-to-remove-the-gil-and-boost-concurrency.html

譯文如下:

經(jīng)過多次辯論,Python 指導(dǎo)委員會打算批準(zhǔn) PEP 703 提案——”使全局解釋器鎖在 CPython 中可選“

PEP 703 提案是多年來嘗試移除 Python GIL 鎖的最終結(jié)果。GIL 鎖的移除消除了多線程的主要障礙,使得 Python 成為真正的多核語言,并且顯著提高其并行工作負(fù)載的性能

有了 PEP 703 提案,Python 中對多線程和并發(fā)的一流支持離成為現(xiàn)實又近了一步

為什么要移除 GIL ?

在 python 中,其內(nèi)存管理系統(tǒng)通過維護(hù)每個對象的引用數(shù)量來跟蹤對象的使用情況(Python 的引用計數(shù)機(jī)制)

當(dāng)對象的引用計數(shù)減少為 0 時,系統(tǒng)就會刪除該對象

由于 Python 誕生于多處理器系統(tǒng)很少見且多核處理器還未出現(xiàn)的時代,所以這種引用計數(shù)機(jī)制不是線程安全的

相反,Python 通過一次只允許一個線程訪問對象來實現(xiàn)線程安全,這便是 GIL 的目的

這些年來許多項目都嘗試移除 GIL,它們確實能夠使多線程程序運(yùn)行地更快,但代價是降低了單線程程序的性能

鑒于絕大多數(shù) Python 應(yīng)用程序都是單線程,所以這是一個糟糕的權(quán)衡。盡管對 GIL 的改進(jìn)提升了 Pyhton 對多線程應(yīng)用程序的處理,但仍舊是一個嚴(yán)重的瓶頸

Python 的核心開發(fā)人員最終決定從 CPython 中移除 GIL,但前提是它可以在不減慢單線程程序速度的情況下完成

沒了 GIL,Python 該如何運(yùn)行?

當(dāng)前關(guān)于 Python 的無 GIL 版本的提案都提到了使用多種技術(shù)來使引用計數(shù)線程安全,并且維持單線程程序的速度不變或者僅對其產(chǎn)生最小的影響

下面是一些關(guān)于無 GIL 版本的提案:

  • Biased reference counting(帶偏見的引用計數(shù))

單個線程訪問的對象的引用計數(shù)與多個線程訪問的對象的引用計數(shù)處理方式不同(單線程的更快一點)

由于大多數(shù)對象只被一個線程訪問,因此對單線程程序的影響被降到最低

  • Immortalization(永生)

某些對象(如 None)永遠(yuǎn)不會被回收,因此不需要跟蹤它們的引用計數(shù)

  • Thread-safe memory allocation(線程安全的內(nèi)存分配)

一個新的 CPython 對象內(nèi)存分配系統(tǒng)將使垃圾收集器中的對象跟蹤更容易,并以線程安全的方式分配內(nèi)存

  • Deferred reference counting(延遲引用計數(shù))

某些對象(如模塊中的頂級函數(shù))的引用計數(shù)可以安全地延遲。這樣可以節(jié)省時間和資源

  • A revised garbage collector(修改后的垃圾收集器)

CPyhton 垃圾收集器清楚循環(huán)對象的引用(比如兩個或多個對象互相引用)

無 GIL構(gòu)建對垃圾收集器做了許多更改,例如刪除用于跟蹤對象的“生成”系統(tǒng)

如何逐步引入無 GIL 的 Python?

實施 PEP 703 是一個長期項目,將會在幾年內(nèi)分成多個階段進(jìn)行。在此期間,CPython 解釋器先過渡到使 no-GIL 版本可選,然后是支持,最后成為標(biāo)準(zhǔn)

為了實現(xiàn)這個目標(biāo),CPython 的開發(fā)者將會為 CPython 添加一個實驗性的 ’no-GIL‘ 構(gòu)建模式,以便大家可以在有或沒有 GIL 的情況下編譯 CPython 的版本

最終,no-GIL 構(gòu)建將成為默認(rèn)值

下面則是相關(guān)的計劃:

1、no-GIL 是可選項

對于 CPython 開發(fā)人員和 Python 社區(qū)來說,no-GIL CPython 的第一個版本將是實驗性

這個實驗階段有幾個目標(biāo):

  • 首先讓 Python 社區(qū)的其他成員參與進(jìn)來。對 Python 的任何重大更改都需要更廣泛的Python 社區(qū)的支持。實驗性版本為 Python 用戶提供了一種安全地試驗測試其代碼的方法,并且能夠觀察非線程和線程代碼的行為方式
  • 其次讓 Python 發(fā)行版可以選擇(而不是”要求“)提供 no-GIL 的 Python。像 Conda 或WinPython 這樣的 Python 發(fā)行版需要保證與原有的 CPython 兼容。在過渡階段,安裝的時候可以提供常規(guī)或者 no-GIL 版本的 CPython 選項,這將允許 Conda 或WinPython 用戶選擇最適合他們需求的版本
  • 最后確定 no-GIL 項目是否值得。如果社區(qū)大規(guī)模嘗試 no-GIL 的構(gòu)建后對結(jié)果不滿意,CPython 核心開發(fā)人員保留退出的權(quán)利。雙重構(gòu)建意味著在短期內(nèi)會增加維護(hù)負(fù)擔(dān),但如果 no-GIL 項目被證明不值得,他們也有退路

2、支持 no-GIL Python

下一階段將提供 no-GIL 構(gòu)建作為 CPython 支持的替代構(gòu)建

用戶可以選擇安裝 no-GIL 或 GIL 版本,其中任何一個版本都是正式支持的 CPython 版本,可以接收錯誤修復(fù)、安全補(bǔ)丁和更新

這個階段的一大目標(biāo)是設(shè)置一個期限,使 no-GIL 成為默認(rèn)值

這可能與其他 Python 功能的棄用和刪除在同一時間線上發(fā)生——至少兩三個版本,也意味著至少兩到三年

3、no-GIL 成為默認(rèn)

最后階段是將 CPython 的 no-GIL 版本作為默認(rèn)版本,并從 CPython 中刪除所有與 GIL 相關(guān)的代碼

”我們不想等待太久“,CPython 核心開發(fā)人員 Thomas Wouters 寫道,“因為擁有兩種通用的構(gòu)建模式可能會給社區(qū)帶來沉重的負(fù)擔(dān)(例如,它可以將測試資源和調(diào)試場景加倍),但我們也不能急于求成。我們認(rèn)為可能需要長達(dá)五年的時間才能達(dá)到這個階段

移除 GIL 的最大挑戰(zhàn)

盡管技術(shù)挑戰(zhàn)令人生畏,但這項計劃的最大挑戰(zhàn)不僅僅是技術(shù)挑戰(zhàn)。更大的問題是如何使 Python 生態(tài)系統(tǒng)的其余部分與這些變化保持一致且確保 no-GIL 的 Python 不會產(chǎn)生比它解決的問題更多的問題

根據(jù) Wouters 的說法,”...適應(yīng)非 GIL 構(gòu)建所需的第三方代碼的任何更改都應(yīng)該只適用于 GIL 構(gòu)建(盡管仍然需要解決與舊 Python 版本的向后兼容性問題)“

如上所述,另一個重大挑戰(zhàn)是”帶領(lǐng)Python社區(qū)的其他成員,” Wouters 說,“……確保我們想要做出的改變,以及我們希望他們做出的改變,是可以接受的

“在我們承諾完全切換到 no-GIL 構(gòu)建之前,我們需要看到社區(qū)對它的支持,” Wouters說?!拔覀儾荒苤皇歉淖兡J(rèn)值,然后期望社區(qū)找出他們需要做些什么來支持它”

Python 社區(qū)在從 Python 2 過渡到 Python 3 的過程中經(jīng)歷了巨大的成長痛苦,因此任何像移除 GIL 這樣的重大更改都必須完全向后兼容

正如 Wouters 所說,“我們不希望再出現(xiàn) Python 3 的情況?!?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-637952.html

不過在危險和挑戰(zhàn)之外,還有一個巨大的回報——Python 最終支持了程序員在 21 世紀(jì)所期望的并行性文章來源地址http://www.zghlxwxcb.cn/news/detail-637952.html

到了這里,關(guān)于GIL 鎖或?qū)⒃?CPython 中成為可選項的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • python——GIL鎖詳解

    python——GIL鎖詳解

    1、GIL鎖不是python的特點。而是cpython的特點。 2、在cpython解釋器中,GIL是一把互斥鎖,用來保證進(jìn)程中同一個時刻只有一個線程在執(zhí)行。 3、在沒有GIL鎖的情況下,有可能多線程在執(zhí)行一個代碼的同時,垃圾回收機(jī)制對所執(zhí)行代碼的變量直接進(jìn)行回收,其他的線程再使用該變量

    2024年02月12日
    瀏覽(13)
  • NFT 游戲新模式遐想:讓“永久性死亡”在加密游戲中成為現(xiàn)實

    NFT 游戲新模式遐想:讓“永久性死亡”在加密游戲中成為現(xiàn)實

    準(zhǔn)確點來講,我的意思是, 在加密游戲中引入永久性死亡的概念,就像在現(xiàn)實生活中一樣。 游戲中的永久性死亡將開啟新的體驗和游戲方式。 當(dāng)你在玩 FPS 或 RPG 游戲時,你可能會在游戲中“死亡”。此外,你將擁有一定數(shù)量的生命,要么固定,要么無限。死亡的概念存在于

    2023年04月25日
    瀏覽(16)
  • Python面試:什么是GIL

    Python面試:什么是GIL

    輸出為: 4 0 LOAD_CONST 1 (1) 2 LOAD_FAST 0 (l) 4 LOAD_CONST 2 (0) 6 STORE_SUBSCR 8 LOAD_CONST 0 (None) 10 RETURN_VALUE “STORE_SUBSCR”,可見只有單節(jié)字碼操作。 輸出為: 2 0 LOAD_FAST 0 (l) 2 LOAD_CONST 1 (0) 4 DUP_TOP_TWO 6 BINARY_SUBSCR 8 LOAD_CONST 2 (1) 10 INPLACE_ADD 12 ROT_THREE 14 STORE_SUBSCR 16 LOAD_CONST 0 (None) 18 RETURN_VAL

    2024年02月11日
    瀏覽(8)
  • Python多線程與GIL鎖

    python多線程 Python的多線程編程可以在單個進(jìn)程內(nèi)創(chuàng)建多個線程來同時執(zhí)行多個任務(wù),從而提高程序的效率和性能。Python的多線程實現(xiàn)依賴于操作系統(tǒng)的線程調(diào)度器,并且受到全局解釋器鎖(GIL)的限制,因此在某些情況下,多線程并不能真正實現(xiàn)并行執(zhí)行。 上述代碼創(chuàng)建了

    2023年04月09日
    瀏覽(14)
  • CPython, Pypy, MicroPython...還在傻傻分不清楚?

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

    2024年02月12日
    瀏覽(48)
  • CC0模式如何在NFT市場中成為主流?探索CC0 NFT的市場反饋

    CC0模式如何在NFT市場中成為主流?探索CC0 NFT的市場反饋

    知識產(chǎn)權(quán)和版權(quán)是一個有著悠久而曲折歷史的復(fù)雜現(xiàn)象。追溯到 18 世紀(jì),版權(quán)法已經(jīng)發(fā)展并以許多不同的方式在幾乎同樣多的法律管轄區(qū)得到應(yīng)用。 隨著 NFT 生態(tài)系統(tǒng)中的人們尋求一種既能避免混亂的版權(quán)問題,又能合法地賦予收藏者權(quán)力的方法,一些項目開始使用一種稱為

    2024年02月01日
    瀏覽(23)
  • Python 潮流周刊#24:no-GIL 提案正式被采納了!

    你好,我是貓哥。這里每周分享優(yōu)質(zhì)的 Python、AI 及通用技術(shù)內(nèi)容,大部分為英文。標(biāo)題取自其中兩則分享,不代表全部內(nèi)容都是該主題,特此聲明。 微信 | 博客 | 郵件 | Github | Telegram | Twitter 本周刊的源文件歸檔在 Github 上,已收獲 777 star 好評,如果你也喜歡本周刊,就請給

    2024年02月08日
    瀏覽(22)
  • Google 工程主管:AIGC 將在三年內(nèi)終結(jié)編程!

    Google 工程主管:AIGC 將在三年內(nèi)終結(jié)編程!

    大家注意:因為微信最近又改了推送機(jī)制,經(jīng)常有小伙伴說錯過了之前被刪的文章,比如前陣子冒著風(fēng)險寫的爬蟲,再比如一些限時福利,錯過了就是錯過了。 所以建議大家加個星標(biāo),就能第一時間收到推送。?? 推薦閱讀: 太震撼了! Pandas2.0來了! 大家好,我是了不起!

    2024年02月12日
    瀏覽(23)
  • Python黑魔法揭秘:裝飾器、生成器、異步編程、GIL、描述符和元類

    Python中的某些特性被看作是“黑魔法”,原因在于它們的強(qiáng)大功能和復(fù)雜性。接下來,讓我們深入探索這些特性。 裝飾器是修改函數(shù)或類行為的強(qiáng)大工具,它提供了一種可讀性強(qiáng)、代碼重用的方式來增強(qiáng)或修改函數(shù)或類的行為。裝飾器就像一個包裹原函數(shù)或類的外殼,能夠在

    2024年02月14日
    瀏覽(28)
  • 【AIGC】重磅消息,GPT-4.5 Turbo將在6月發(fā)布?

    【AIGC】重磅消息,GPT-4.5 Turbo將在6月發(fā)布?

    2024 年 AI 輔助研發(fā)趨勢 強(qiáng)烈推薦 前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到網(wǎng)站: 人工智能 GPT-4.5 Turbo 就在昨天GPT-4.5 Turbo 疑似被 OpenAI 網(wǎng)絡(luò)團(tuán)隊泄露了! Bing和DuckDuck Go等搜索引擎在GPT-4.5 Turbo正式發(fā)布之前就已經(jīng)對

    2024年03月15日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包