據 Python 基金會,開發者 Sam Gross 在 2022 Python 語言峰會上帶來了一個新提案:完全移除 CPython 直譯器的 ,使 Python 程式獲得更快的效能 —— 尤其是多執行緒程式。
Python 有多個版本,包括 JVM 、 .NET CLR 直譯器以及編譯器,但該語言的核心實現仍是 CPython 直譯器。由於 CPython 的記憶體管理非執行緒安全,因此設計了 CPython 的 GIL (Global Interpreter Lock - 全域性直譯器鎖),以防止競爭條件並確保執行緒安全。 GIL 是一個互斥鎖,只允許一個執行緒持有 Python 直譯器的控制權,從而保護對 Python 物件的存取,防止多個執行緒同時執行 Python 位元組碼。
但事後看來,GIL 並不理想,因為它阻止了多執行緒的 CPython 程式充分利用多核處理器的效能。但由於 GIL 長期存在,許多官方和非官方 Python 包和模組都深度融合了 GIL 模組,移除 GIL 功能的工作變得任重而道遠。此前,開發者 Larry Hastings 在其 (GIL 切除手術)專案中試圖完成 CPython GIL 功能的移除,但該專案失敗了,因為它使單執行緒 Python 程式碼顯著變慢。
而此次 Python 語言峰會帶來了另外一個專案 ,該專案由 Meta 開發人員 Sam Gross 主持,從專案名稱不難看出,這也是一個專注於移除 GIL 的專案。參考了 Gilectomy 專案的失敗經驗, Sam Gross 意識到 :如果要使 Python 在沒有 GIL 的情況下有效工作,則需要新增新的鎖,以確保它仍然是執行緒安全的。然而,向現有程式碼新增新鎖可能非常困難,因為新的鎖可能會導致在部分領域的效能大幅下降。
據 Python 基金會的介紹,Gross 將發明一種新型鎖,一種「更吉利」的鎖。如果順利的話,這個新鎖很可能在 Python 3.12 版本亮相,因為 Gross 的提案就是「在 Python 3.12 中引入一個新的編譯器標誌,該標誌將禁用 GIL。」