全局解釋器鎖

全局解釋器鎖(Global Interpreter Lock)是電腦程式設計語言解釋器用於同步執行緒的工具,使得在同一進程內任何時刻僅有一個執行緒在執行。常見例子有CPython(JPython不使用GIL)與Ruby MRI。

詳情

•Python的執行緒是作業系統執行緒。在Linux上為pthread,在Windows上為Win thread,完全由作業系統調度執行緒的執行。一個python解釋器進程內有一條主執行緒,以及多條用戶程式的執行執行緒。即使在多核CPU平台上,由於GIL的存在,所以禁止多執行緒的並行執行。

•Python解釋器進程內的多執行緒是合作多任務方式執行。當一個執行緒遇到I/O任務時,將釋放GIL。計算密集型(CPU-bound)的執行緒在執行大約100次解釋器的計步(ticks)時,將釋放GIL。計步(ticks)可粗略看作Python虛擬機的指令。計步實際上與時間片長度無關。可以通過sys.setcheckinterval()設定計步長度。

•在單核CPU上,數百次的間隔檢查才會導致一次執行緒切換。在多核CPU上,存在嚴重的執行緒顛簸(thrashing)。

•Python 3.2開始使用新的GIL。

•可以創建獨立的進程來實現並行化。

相關詞條

熱門詞條

聯絡我們