為什么python的GIL問題一直讓人詬病?
GIL這把大鎖,到現在還存在是有它道理的。首先,我們知道python是解釋型語言,代碼執行都是在解釋器里執行的。解釋型語言都有不能實現真正的多線程并發的通病。這個是先天性的。多個線程是共享主進程資源的,如果不給線程加鎖,讓線程并發,多個線程修改共享數據,就會引發數據混亂,這是不可靠的。因為解釋器不知道你在代碼哪里去修改共享數據了,所以一刀切,直接給線程加鎖了。在同一時間解釋器只允許一個線程運行。
當然了,你可能會說,我直接讓解釋器給要修改的共享數據加鎖,這樣多線程真正并行不就行了?其實國外早就有大佬這么做了,測試出來的結果,執行效率還不如直接給線程加鎖。到目前為止,python開發團隊都還沒有提出更好的解決這個問題。這個是解釋型語言的通病。此外,要解決這個問題,技術難度很大。
雖然GIL這把大鎖的存在影響多線程不能真正的并發,但是我們可以用多進程來解決呀。
下一篇自學了一年沒有工作