作者:默思編輯部 發布:2026-05-30
Python 從 3.13 開始提供免鎖模式(free-threaded build,也就是關閉 GIL 全域直譯器鎖)的建置選項;到了 2025 年 10 月發布的 Python 3.14,官方已經正式支援免鎖模式,並重新啟用了特化直譯器(specializing interpreter),把單執行緒效能損失壓低到只有 5% 到 10%。
2026 年,主要函式庫的免鎖模式支援正在加速跟進:NumPy、SciPy、FastAPI 等重量級套件,都已經提供針對免鎖建置版本預先編譯好的 wheel 檔案;NumPy、Django 等專案,也正在調整內部程式碼邏輯,確保在沒有 GIL 保護的情況下依然執行安全。社群維護的相容性追蹤網站(py-free-threading.github.io)目前是查詢特定套件相容進度最可靠的參考來源。
免鎖模式生態系裡有一個特別值得注意的「隱形殺手」:只要你的程式匯入了任何一個沒有宣告 Py_mod_gil 支援的 C 擴充套件模組,你的免鎖 Python 環境就會在你完全不知情的狀況下,被自動重新啟用 GIL——也就是說,開發者可能以為自己正在享受免鎖模式的多執行緒效能,實際上早就因為某個相依套件而悄悄退回傳統模式,而且過程完全沒有警告訊息。
免鎖模式的實際效能取捨:單執行緒額外開銷約 5% 到 10%,多執行緒 CPU 密集工作可以獲得約 4 倍加速,但記憶體用量也會增加 15% 到 20%。部分帶有 C 擴充模組的第三方套件,可能還沒準備好在免鎖建置下運作,遇到時會直接重新啟用 GIL 作為安全後備機制。
目前官方規劃分為四個階段:第二階段(3.14,2025 年 10 月)是正式支援但需要另外選擇免鎖版本的 wheel、屬於選擇性加入(opt-in);第三階段(預估 2027-2028 年)GIL 將預設關閉,但仍可透過執行期參數重新開啟;第四階段(預估 2029-2030 年)GIL 才會被完全移除。
如果你正在評估要不要在專案中導入免鎖模式,實務上的第一步不是直接切換,而是先盤點專案所有相依套件在 py-free-threading.github.io 上的相容狀態——尤其要留意那些帶有 C 擴充模組、卻沒有明確標示免鎖相容性的套件,避免陷入「以為在用免鎖模式、實際上 GIL 早就悄悄回來了」的陷阱。