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

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


咨詢
建站咨詢
