一,gil的概念:
python全域性直譯器鎖。
二,gil產生的原因:
1,guido van rossum(吉多·範羅蘇姆)建立python時就只考慮到單核cpu。
2,解決多執行緒之間資料完整性和狀態同步的最簡單方法自然就是加鎖。 於是有了gil這把超級大鎖。
3,cpython解析只允許擁有gil全域性解析器鎖才能執行程式。
4,保證同乙個時刻只允許乙個執行緒可以使用cpu。
5,以前寫cpython解析器的時候就考慮乙個cpu情況。
6,由於大量的程式開發者接收了這套機制,現在**量越來越多,已經不容易通過c**去解決這個問題。
三,gil的作用:
保證同一時刻只能乙個執行緒使用cpu。
四,解決方案:
1,更換cpython為jpython(不建議)。
2,使用多程序完成多執行緒的任務。
3,在使用多執行緒可以使用c語言去實現。
Python之GIL的理解總結
前言 並行和併發的區別,程序和執行緒,個人理解 並行 多個cpu同時執行兩個程式,兩個程式真的同時在執行。併發 兩個程式在乙個cpu上執行,通過cpu時間片排程執行,執行的很快,看起來像並行,其實是併發,具體某乙個時間點,一定只有乙個程式在執行。程序與執行緒 對於作業系統而言,乙個任務就是乙個程序,...
Python中GIL全域性直譯器鎖的理解
gil的全稱是 global interpreter lock,意思就是全域性直譯器鎖,gil並不是python的特性,只在cpython直譯器裡引入的乙個概念,而在其他的語言編寫的直譯器裡就沒有這個gil例如 jpthon import threading 子執行緒死迴圈 def test whi...
GIL問題的理解
簡單說 執行緒的鎖機制與cpu的鎖 gil 粒度不一樣,gil並不能保證執行緒安全 單個位元組碼操作 原子操作 是執行緒安全的,非原子操作是多位元組碼操作 所以我理解的gil只是使一些簡單的原子操作變成了執行緒安全的 而非那些原子操作的過程仍然 需要我們自己使用鎖機制進行同步 gil保證的是位元組碼...