久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python社區(qū)變天:可去除全局解釋器鎖GIL,,真正多線程要來(lái)了

 天承辦公室 2023-08-01 發(fā)布于江蘇

機(jī)器之心報(bào)道

編輯:杜偉、陳萍
這次,,Python 將不再是人們所說(shuō)的偽多線程了,。

「Python 中的 GIL 將不復(fù)存在,這是人工智能生態(tài)系統(tǒng)領(lǐng)域中的巨大勝利,?!筆yTorch 核心維護(hù)者 Dmytro Dzhulgakov 感慨道。

圖片

GIL 是什么,?GIL 的全稱是 Global Interpreter Lock(全局解釋器鎖),,它不是 Python 獨(dú)有的,而是在實(shí)現(xiàn) CPython(Python 解釋器)時(shí)引入的一個(gè)概念,。我們可以將 GIL 理解為一個(gè)互斥鎖,,用來(lái)保護(hù) Python 里的對(duì)象,防止同一時(shí)刻多個(gè)線程執(zhí)行 Python 的字節(jié)碼,從而確保線程安全,。

圖片
圖源:https:///python-gil/

然而,,GIL 存在一個(gè)弊端,即在同一時(shí)刻只能有一個(gè)線程在一個(gè) CPU 上執(zhí)行,,無(wú)法將多個(gè)線程映射到多個(gè) CPU 上,,使得 Python 并不能實(shí)現(xiàn)真正的多線程并發(fā),從而降低了執(zhí)行效率,。

現(xiàn)在,,Python 團(tuán)隊(duì)已經(jīng)正式接受了刪除 GIL 的這個(gè)提議,并將其設(shè)置為可選模式,,可謂是利好廣大開(kāi)發(fā)者,。

做出這一貢獻(xiàn)的是一位來(lái)自 Meta 的名叫 Sam Gross 的軟件工程師,他花費(fèi)了四年多的時(shí)間才完成這一工程,。

在得知這一消息后,,大家紛紛叫好,深度學(xué)習(xí)三巨頭之一的 Yann LeCun 發(fā)文祝賀:沒(méi)有了 GIL,,現(xiàn)在,,Python 代碼可以自由的執(zhí)行多線程了。

圖片

「Python 中終于沒(méi)有 GIL 了,!」

圖片

「這是一個(gè)里程碑式的決定,,是編碼社區(qū)所熱切期待的?!?/span>

圖片

具體細(xì)節(jié)如何,,我們接著看下文,。

CPython 核心開(kāi)發(fā)者 Thomas Wouters 撰文描述了 Python 中的無(wú) GIL 細(xì)節(jié),,并對(duì)未來(lái)發(fā)展做了展望。

非常感謝所有人對(duì)無(wú) GIL 提議的反饋,,整體上都持積極的支持態(tài)度,。指導(dǎo)委員會(huì)打算接受無(wú) GIL 提議,并就以下具體細(xì)節(jié)與大家分享,。

我們的基本設(shè)想是:

  • 長(zhǎng)期來(lái)看(大約 5 年以上),,no-GIL 構(gòu)建應(yīng)是唯一的構(gòu)建;
  • 我們希望非常謹(jǐn)慎地對(duì)待向后兼容,。我們不希望出現(xiàn)另一個(gè) Python 3 的情況,,所有適應(yīng) no-GIL 構(gòu)建所需的第三方代碼更改應(yīng)只適用于 with-GIL 構(gòu)建(盡管仍要解決更老 Python 版本的向后兼容性問(wèn)題)。這不適用于 Python 4,。我們?nèi)栽诳紤]對(duì)這兩個(gè)構(gòu)建的 ABI 兼容性和其他細(xì)節(jié)的要求,,以及對(duì)向后兼容性的影響;
  • 在我們承諾完全轉(zhuǎn)向 no-GIL 之前,希望看到社區(qū)的支持,。我們不能只是更改默認(rèn)設(shè)置,,更希望社區(qū)弄清自己做什么工作來(lái)給予我們支持。我們核心開(kāi)發(fā)團(tuán)隊(duì)需要獲得新構(gòu)建模式及相關(guān)所有內(nèi)容的經(jīng)驗(yàn),。我們要整理現(xiàn)有代碼中的線程安全性,,需要弄明白新的 C API 和 Python API。我們?cè)讷@得這些洞見(jiàn)時(shí)還需要傳達(dá)給 Python 社區(qū)的其他人,,并確保自身想要做出的更改以及希望其他人做出的更改是可取的,;
  • 在我們默認(rèn) no-GIL 設(shè)置之前的任何時(shí)候,如果事實(shí)證明了,,它的破壞性太大導(dǎo)致收益太少,,我們希望能夠改變主意。這也就意味著我們會(huì)回滾所有工作,,因此在我們確定要將 no-GIL 設(shè)為默認(rèn)方式之前,,特定于 no-GIL 的代碼在某種程度上應(yīng)是可識(shí)別的。

目前,,我們認(rèn)為未來(lái)的道路分為以下三個(gè)階段:

  • 短期內(nèi),,我們會(huì)將 no-GIL 構(gòu)建作為一種實(shí)驗(yàn)性構(gòu)建模式,大概會(huì)在 3.13 版本(也有可能推遲到 3.14 版本)可用,。之所以是實(shí)驗(yàn)性的,,是因?yàn)槲覀兒诵拈_(kāi)發(fā)團(tuán)隊(duì)雖然支持這一構(gòu)建模式,但不期望整個(gè)社區(qū)都會(huì)支持它,。我們需要時(shí)間理清自己要做什么,,至少在 API 設(shè)計(jì)以及打包和分發(fā)方面,從而得到社區(qū)的支持,。我們也不鼓勵(lì) distributor 將實(shí)驗(yàn)性 no-GIL 構(gòu)建作為默認(rèn)解釋器發(fā)布,。
  • 中期來(lái)看,在我們確信得到足夠的社區(qū)支持并使 no-GIL 的生產(chǎn)使用可行后,,我們將支持 no-GIL 構(gòu)建,,但不是默認(rèn)方式,而是在某個(gè)目標(biāo)日期或某個(gè) Python 版本中使它成為默認(rèn)方式,。具體的時(shí)間將取決于很多因素,,比如 API 更改最終的兼容性如何、社區(qū)認(rèn)為他們?nèi)匀恍枰龆嗌俟ぷ鞯?。我們預(yù)計(jì)這至少需要一至兩年的時(shí)間,。一旦我們宣布支持,預(yù)計(jì)將有一些 distributor 會(huì)開(kāi)始默認(rèn)發(fā)布 no-GIL,。
  • 長(zhǎng)期來(lái)看,,我們希望 no-GIL 成為默認(rèn)方式,并刪除 GIL 的所有痕跡(但不會(huì)不必要地破壞向后兼容性)。我們不希望等太長(zhǎng)時(shí)間,,畢竟兩種常用的構(gòu)建模式同時(shí)存在會(huì)給社區(qū)造成很大的負(fù)擔(dān)(比如需要雙倍測(cè)試資源和 debug 場(chǎng)景),。但是我們也不能急于求成。我們認(rèn)為這一過(guò)程將需要花費(fèi)五年的時(shí)間,。

當(dāng)然在整個(gè)過(guò)程中,,我們整個(gè)開(kāi)發(fā)團(tuán)隊(duì)將需要實(shí)時(shí)評(píng)估進(jìn)程并對(duì)時(shí)間線進(jìn)行調(diào)整。

評(píng)論區(qū)的小伙伴們,,你們對(duì) GIL 成為可選是什么看法呢,?

參考鏈接:
https://discuss./t/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional-in-cpython/30474
https://twitter.com/dzhulgakov/status/1685667015800066048

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多