Python 是一種高級編程語言。
近日有消息稱, Python 項目指導委員會已宣布希望批准 Python 語言擴展提案 «PEP-0703”,使全局解釋器鎖在 CPython 中成為可選,並且基本上定義了沒有全局解釋器鎖(GIL)的 CPython 編譯模式的嵌入。
PEP-0703 默認情況下定義停止使用 GIL, 但添加構建選項“–sin-gil”來禁用它。 你好嗎l 新模式有望解決並行化問題 多核系統上的操作,由於全局鎖不允許不同線程並行訪問共享對象而引起。
值得注意的是,從長遠來看(5年後), shell 計劃更改為默認僅在全局非鎖定模式下,同時放棄對使用 GIL 編譯的支持。
感謝大家對 no-GIL 提案的調查做出回應。 顯然,總體情緒是積極的,無論是總體想法還是 PEP 703。 董事會對兩者也基本上持積極態度。 我們打算接受 PEP 703,儘管我們仍在製定接受細節。
正如我們過去幾次所做的那樣,我們希望傳達我們接受 PEP 的意圖以及我們目前對接受相關細節的想法。
除此之外, 據悉,此次改革計劃分三個階段進行, 分別是短期、中期和長期。 鑑於 在第一階段,默認禁用 GIL 是不切實際的 由於與垃圾收集器、內存管理系統和組織鎖原語的更改相關的開銷。 例如,由於使用引用計數進行線程隔離,單線程腳本的性能下降(在 pyperformance 測試套件中下降了 10%)。 同時,在科學計算中可能需要禁用GIL,對於科學計算而言,缺乏並行性是比代碼執行的線性速度更嚴重的問題。
第二階段基本上是等待確認。 並且有足夠的社會支持,以便 使用“非 GIL 是可行的” 並確保支持無 GIL 構建,但不是默認的。
在最後階段,no-GIL 已經是默認值 並且 GIL 的任何痕跡都將被刪除(不會不必要地破壞向後兼容性)。
據觀察, 擺脫 GIL 的工作將會非常謹慎,以免重蹈覆轍 推廣時發生了什麼 Python的3:非 GIL 構建需要確保與舊版本 Python 的兼容性,並且在非 GIL 構建上工作所需的任何第三方代碼更改也應該在 GIL 構建上工作。
沒有計劃將非 GIL 版本的版本重新編號為 Python 4,因為它們將保持 ABI 兼容性。
在整個過程中,我們(核心開發人員,而不僅僅是 SC)將需要重新評估進度和建議的時間表。 我們不希望這成為另一場長達十年的向後兼容性之爭,並且我們希望能夠取消 PEP 703,並在出現問題時找到另一個解決方案,因此我們需要定期檢查繼續工作是否值得。
我們希望在我們制定接受的具體細節時,這可以為 PEP 的未來提供一些清晰的信息。 SC 將在未來幾週內完成驗收工作。
在完全過渡到非 GIL 版本之前,我們計劃獲得對這些版本的全面社區支持,並提供額外的 C API 和 Python API 以在現有代碼中啟用安全多線程。
最後,正如已經提到的,預計至少會在 5 年內過渡到第三階段,PEP-0703 的可能日期是 Python 3.13 的發布,計劃於明年秋季發布。
如果你是 有興趣了解更多,您可以查看詳細信息 在下面的鏈接中。