詳情
•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。
•可以創建獨立的進程來實現並行化。