1. 程式人生 > >GIL執行緒全域性鎖

GIL執行緒全域性鎖

1.GIL概述
GIL ( Global Interperter Lock ) 稱作全域性直譯器鎖。首先需要明確一點,我們所講的 GIL 並不是 Python 語言的特性,它是在實現 Python 直譯器時引用的一個概念。GIL 只在CPython 直譯器上存在。

2.GIL優缺點
優點:
GIL 是 Python 解釋層面的鎖,即Python為了保證執行緒安全而採取的獨立執行緒執行的限制,說白了就是一個核只能在同一時間執行一個執行緒解決直譯器中多個執行緒的競爭資源問題。
缺點:
但是這僅僅是對io密集型任務,python的多執行緒起到作用,但對於cpu密集型任務,python的多執行緒幾乎佔不到任何優勢,還有可能因為爭奪資源而變慢。

3.如何改善 GIL 產生的問題

因為 GIL 鎖是直譯器層面的鎖,無法去除 GIL 鎖在執行程式時帶來的問題。只能去改善。

  • 更換更高版本的直譯器,比如3.6,從3.2版本開始,Python對解釋做了優化,但並不理想
  • 更換直譯器,比如 Jython,但是由於比較小眾,支援的模組較少,導致開發效率降低
  • Python為了解決程式使用多核的問題,使用多程序替代多執行緒 ,或者是用協程(協程也只是但cpu,但是能減少切換代價提升效能)。