新聞中心
Python 有多個版本,包括 JVM 、 .NET CLR 解釋器以及編譯器,但該語言的核心實現(xiàn)仍是 CPython 解釋器。由于 CPython 的內(nèi)存管理非線程安全,因此設(shè)計了 CPython 的 GIL (Global Interpreter Lock - 全局解釋器鎖),以防止競爭條件并確保線程安全。 GIL 是一個互斥鎖,只允許一個線程持有 Python 解釋器的控制權(quán),從而保護(hù)對 Python 對象的訪問,防止多個線程同時執(zhí)行 Python 字節(jié)碼。

為孝昌等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及孝昌網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、網(wǎng)站制作、孝昌網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
但事后看來,GIL 并不理想,因為它阻止了多線程的 CPython 程序充分利用多核處理器的性能。但由于 GIL 長期存在,許多官方和非官方 Python 包和模塊都深度融合了 GIL 模塊,移除 GIL 功能的工作變得任重而道遠(yuǎn)。此前,開發(fā)者 Larry Hastings 在其 “Gilectomy” (GIL 切除手術(shù))項目中試圖完成 CPython GIL 功能的移除,但該項目失敗了,因為它使單線程 Python 代碼顯著變慢。
而此次 Python 語言峰會帶來了另外一個項目 “nogil”,該項目由 Meta 開發(fā)人員 Sam Gross 主持,從項目名稱不難看出,這也是一個專注于移除 GIL 的項目。參考了 Gilectomy 項目的失敗經(jīng)驗, Sam Gross 意識到 :如果要使 Python 在沒有 GIL 的情況下有效工作,則需要添加新的鎖,以確保它仍然是線程安全的。然而,向現(xiàn)有代碼添加新鎖可能非常困難,因為新的鎖可能會導(dǎo)致在部分領(lǐng)域的性能大幅下降。
據(jù) Python 基金會的介紹,Gross 將發(fā)明一種新型鎖,一種 “更吉利” 的鎖。如果順利的話,這個新鎖很可能在 Python 3.12 版本亮相,因為 Gross 的提案就是 “在 Python 3.12 中引入一個新的編譯器標(biāo)志,該標(biāo)志將禁用 GIL?!?/p>
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:Python 新提案:刪除全局解釋器鎖 GIL,解放多線程性能
本文地址:https://www.oschina.net/news/196247/remove-gil-from-cpython
當(dāng)前題目:Python 新提案:刪除全局解釋器鎖 GIL,解放多線程性能
文章來源:http://www.5511xx.com/article/ccepegi.html


咨詢
建站咨詢
