一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python新提案:使全局解釋器鎖成為可選項(xiàng)

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-01-13 15:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

去年的 2022 Python 語言峰會(huì)上,開發(fā)者 Sam Gross 帶來了新提案:刪除全局解釋器鎖 GIL,解放多線程性能。但由于 GIL 歷史悠久,許多官方 / 非官方的 Python 包和模塊都深度融合了 GIL 模塊,徹底移除 GIL 功能可能會(huì)對生態(tài)造成影響。在 2023 年 1 月 9 日, Sam Gross 又創(chuàng)建了另一個(gè) Python 提案 PEP 703:使全局解釋器鎖成為構(gòu)建 Python 的可選項(xiàng)。

f52bcf44-9299-11ed-bfe3-dac502259ad0.png

CPython 的全局解釋器鎖(“GIL”)防止多個(gè)線程同時(shí)執(zhí)行 Python 代碼,GIL 是 Python 有效使用多核 CPU 的障礙。

向 CPython 添加一個(gè)構(gòu)建配置 ( --without-gil) ,使其可在沒有全局解釋器鎖的情況下運(yùn)行 Python 代碼,并進(jìn)行必要的更改,以使解釋器線程安全。

這條 PEP 提案的內(nèi)容可謂是論文級別。提案中先闡述了 GIL 對 Python 并發(fā)的性能阻礙,隨后詳細(xì)分析了抽離 GIL 需要對 Python 內(nèi)部進(jìn)行哪些改動(dòng):

移除全局解釋器鎖需要對 CPython 內(nèi)部進(jìn)行大量更改,但對公共 Python 和 C API 的更改相對較少。

實(shí)施的變更大約分為以下四類:

引用計(jì)數(shù)、內(nèi)存管理、容器線程安全、鎖和 atomic API

由于該提案內(nèi)容實(shí)在太多,感興趣的朋友請?jiān)?PEP 703 詳情頁(https://peps.python.org/pep-0703)和 Cpython 核心開發(fā)者對該提案的討論帖(https://discuss.python.org/t/pep-703-making-the-global-interpreter-lock-optional/22606/10)中細(xì)閱。

目前此 PEP 已經(jīng)有了參考實(shí)現(xiàn),它的原型源于當(dāng)初為了移除 GIL 而開發(fā)的 nogil 項(xiàng)目,該原型對單線程代碼帶來較明顯 (~10%) 性能提升。

如果該提案通過,意味著默認(rèn)情況下 CPython 不會(huì)刪除或關(guān)閉 GIL,也不會(huì)讓用戶有選擇地啟用 / 刪除 GIL。因?yàn)?-without-gil是一個(gè)編譯時(shí)標(biāo)志,可以在從源代碼構(gòu)建 Python 解釋器時(shí)進(jìn)行設(shè)置。但如果棄用該配置,會(huì)導(dǎo)致對解釋器的構(gòu)建和運(yùn)行方式的深度侵入性更改,PEP 中也對此進(jìn)行了詳細(xì)介紹。

對用戶側(cè)來說,該改動(dòng)意味著如果用戶使用任何帶有編譯擴(kuò)展的包,將需要獲取或構(gòu)建一個(gè)專門針對 Python 解釋器的(不同的)ABI 編譯的版本,該版本在沒有 GIL 的情況下編譯。

關(guān)于 Python GIL

由于 CPython 的內(nèi)存管理非線程安全,因此設(shè)計(jì)了 CPython 的 GIL (Global Interpreter Lock - 全局解釋器鎖),以防止競爭條件并確保線程安全。GIL 是一個(gè)互斥鎖,只允許一個(gè)線程持有 Python 解釋器的控制權(quán),從而保護(hù)對 Python 對象的訪問,防止多個(gè)線程同時(shí)執(zhí)行 Python 字節(jié)碼。

但事后看來,GIL 并不理想,因?yàn)樗柚沽硕嗑€程的 CPython 程序充分利用多核處理器的性能。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86766
  • 解釋器
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    6768

原文標(biāo)題:Python新提案:使全局解釋器鎖成為可選項(xiàng)

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    為什么在MCAL版本SW32K3_S32M27x_RTD_R21-11_5.0.0中,SPI的StartNotification是不可選項(xiàng)?

    為什么在MCAL版本SW32K3_S32M27x_RTD_R21-11_5.0.0中,SPI的StartNotification是不可選項(xiàng)
    發(fā)表于 03-28 06:17

    適用于MySQL和MariaDB的Python連接:可靠的MySQL數(shù)據(jù)連接和數(shù)據(jù)庫

    和 Linux 的 wheel 包分發(fā)。 直接連接 該解決方案使您能夠通過 TCP/IP 建立與 MySQL 或者 MariaDB 數(shù)據(jù)庫服務(wù)的直接連接,而無需數(shù)據(jù)庫客戶端庫。另外直接連接可以提高 Python 應(yīng)用程
    的頭像 發(fā)表于 01-17 12:18 ?496次閱讀
    適用于MySQL和MariaDB的<b class='flag-5'>Python</b>連接<b class='flag-5'>器</b>:可靠的MySQL數(shù)據(jù)連接<b class='flag-5'>器</b>和數(shù)據(jù)庫

    Vivado之實(shí)現(xiàn)布局布線流程介紹

    流程由一系列的子流程組成,包括:Design Initialization設(shè)計(jì)初始化、Opt Design設(shè)計(jì)優(yōu)化、Power Opt Design功率優(yōu)化【可選項(xiàng)】、Place Design布局
    的頭像 發(fā)表于 12-06 09:08 ?1779次閱讀
    Vivado之實(shí)現(xiàn)布局布線流程介紹

    科技看點(diǎn):微軟將審議比特幣投資提案 2024年烏鎮(zhèn)峰會(huì)AI“含量”高

    和投資服務(wù)團(tuán)隊(duì)評估了各種可投資資產(chǎn),以資助微軟的持續(xù)運(yùn)營,包括預(yù)計(jì)提供多元化和通脹保護(hù)的資產(chǎn),以及減輕利率上升造成重大經(jīng)濟(jì)損失的風(fēng)險(xiǎn)。” 業(yè)界分析師認(rèn)為如果該投資提案通過股東的投票,那么微軟公司將成為最大的公開上市
    的頭像 發(fā)表于 10-25 16:49 ?2556次閱讀

    D的基本實(shí)現(xiàn)

    是由電平觸發(fā)的,而觸發(fā)則是由邊沿觸發(fā)的。這意味著在控制信號(通常是使能信號)為高或低電平時(shí)保持?jǐn)?shù)據(jù)狀態(tài),而觸發(fā)在時(shí)鐘信號的上升沿或
    的頭像 發(fā)表于 08-30 10:45 ?1810次閱讀

    的基本輸出時(shí)序

    在深入探討的輸出時(shí)序時(shí),我們需要詳細(xì)分析在不同控制信號下的行為表現(xiàn),特別是控制信號(如使能信號E)的電平變化如何影響數(shù)據(jù)輸入(D
    的頭像 發(fā)表于 08-30 10:43 ?1180次閱讀

    與觸發(fā)的狀態(tài)圖是一樣的嗎?為什么?

    與觸發(fā)的狀態(tài)圖并不完全相同 ,這主要是由于它們的工作原理和觸發(fā)機(jī)制存在差異。
    的頭像 發(fā)表于 08-28 10:20 ?661次閱讀

    怎么根據(jù)sr的輸入信息

    在SR中,輸出信息(Q和Q')是根據(jù)輸入信息(S和R)來確定的。SR是一種雙穩(wěn)態(tài)電路,它可以保持一個(gè)二進(jìn)制狀態(tài),直到輸入信號改變。以下是根據(jù)S和R的輸入信息判斷Q和Q'輸出
    的頭像 發(fā)表于 08-28 09:20 ?1091次閱讀

    d解決了sr的什么問題

    D(Data Latch)和SR(Set-Reset Latch)是數(shù)字電路中常見的兩種存儲元件。它們在數(shù)字系統(tǒng)中扮演著重要的角色,用于存儲和傳遞信息。然而,這兩種
    的頭像 發(fā)表于 08-28 09:16 ?1184次閱讀

    嵌入式學(xué)習(xí)-shell介紹

    的命令。三、常用的shell命令Linux命令一般由三部分組成:Command [option] [parameter]。說明:一、[]部分中的內(nèi)容是可選項(xiàng);二、命令,選項(xiàng),參數(shù)都以空格分隔;輸入命令完畢
    發(fā)表于 08-16 09:13

    pytorch和python的關(guān)系是什么

    ,PyTorch已經(jīng)成為了一個(gè)非常受歡迎的框架。本文將介紹PyTorch和Python之間的關(guān)系,以及它們在深度學(xué)習(xí)領(lǐng)域的應(yīng)用。 Python簡介 Python是一種高級、
    的頭像 發(fā)表于 08-01 15:27 ?3284次閱讀

    Python建模算法與應(yīng)用

    Python作為一種功能強(qiáng)大、免費(fèi)、開源且面向?qū)ο蟮木幊陶Z言,在科學(xué)計(jì)算、數(shù)學(xué)建模、數(shù)據(jù)分析等領(lǐng)域展現(xiàn)出了卓越的性能。其簡潔的語法、對動(dòng)態(tài)輸入的支持以及解釋性語言的本質(zhì),使得Python在多個(gè)平臺上
    的頭像 發(fā)表于 07-24 10:41 ?1274次閱讀

    rs和sr有什么區(qū)別嗎

    RS和SR是數(shù)字電路中兩種常見的存儲單元,它們在功能和應(yīng)用上有一些區(qū)別。 RS
    的頭像 發(fā)表于 07-23 14:15 ?2344次閱讀

    電路通過什么觸發(fā)的

    (Latch)是一種在數(shù)字電路中廣泛使用的存儲元件,它能夠存儲一位二進(jìn)制信息。電路的觸發(fā)方式有很多種,包括同步觸發(fā)、邊沿觸發(fā)、電平觸發(fā)等。 一、
    的頭像 發(fā)表于 07-23 11:31 ?940次閱讀

    原態(tài)和新態(tài)的定義

    (Latch)是一種存儲單元,用于存儲一位二進(jìn)制信息。在數(shù)字電路中,是一種基本的存儲元件,廣泛應(yīng)用于寄存、計(jì)數(shù)
    的頭像 發(fā)表于 07-23 10:21 ?1221次閱讀