跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 全域直譯器鎖 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
全域直譯器鎖
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''全域直譯器鎖'''(英語:Global Interpreter Lock,縮寫'''GIL'''), 是電腦程式的設計語言直譯器用佇仝步執行緒的一種機制,伊予任何時刻干焦一个執行緒咧執行。就算是多核心處理器,使用 GIL 的直譯器嘛只允准仝一个時間執行一个執行緒。捷看著的使用 GIL 的直譯器有 CPython 佮 Ruby MRI。 ==Python 的 GIL== * CPython 的執行緒是作業系統的原生執行緒。佇咧 Linux 上為 pthread,佇咧 Windows 上為 Win thread,完全由作業系統排程執行緒的執行。一个 Python 直譯器行程內面有一个主執行緒,猶閣有加一个使用者程式的執行執行緒。就算是多核心 CPU 平台,因為 GIL 的存在矣,嘛會禁止濟執行緒的並列執行。 * Python 直譯器行程內底的多執行緒是以協同運作多工方式執行。做一个執行緒拄著 I / O 做工課的時陣,將釋放 GIL。算密集型(CPU-bound)的執行緒咧執行大約一百擺直譯器的計步(ticks)時,將釋放 GIL。計步(ticks)會當大箍看做 Python 虛擬機器的指令。計步實際上佮時間片長度無關係。會當透過 ` sys . setcheckinterval ( ) ` 設定計步長度。 * 佇單核 CPU 上,數百擺的隔檢查才會致使一擺執行緒切換。在多核 CPU 上,存在嚴重的執行緒顯顯(thrashing)。 * Python 三允二開始使用新的 GIL。新的 GIL 實在做中用一个固定的超時間來指示當前的執行緒放棄全域鎖。佇古早執行緒保持這鎖,而且其他執行緒請求這鎖的時陣,彼當陣仔執行緒就會佇咧五毫秒了後去予人強制釋放該鎖。 * 會當建立獨立的行程來實際做並列化。Python 二鋪六引進了濟的行程包 multiprocessing。或者是將關鍵組件用 C / C + + 寫為 Python 擴充,透過 ctypes 使 Python 程式直接呼叫 C 我的語言編譯的動態連結庫的匯出函式。 ==參考文獻== [[分類: 待校正]]
返回到「
全域直譯器鎖
」。