這篇文章主要講解了“python的GIL是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python的GIL是什么”吧!
GIL,即全局解釋器鎖 ,一個被廣泛吐槽的技術,即便python3.9已經到來,這個GIL依然存在,而且似乎將繼續存在。
為了解決多線程之間數據完整性和狀態同步的問題,引入了GIL, 它可以保證多個原生線程不會并發執行 Python 字節碼。
對于GIL的理解,有一點我們必須嚴肅的弄清楚,GIL并不是python的特性,而是實現Python解析器(CPython,我們平時默認下載安裝使用的解釋器)時所引入的一個概念,這個就好比C++是一套語言標準,但可以用 GCC,INTEL C++,Visual C++ 等編譯器來編譯,編譯出來的可執行程序也就不一樣。你可以使用 CPython,PyPy , JPython 來執行python的代碼,CPython里有GIL,而JPython 就沒有。
Python 的維護者們不是沒考慮過將GIL移除,可是已經有太多的庫依賴這個特性,積重難返。
多線程原本是為了更好的利用CPU的多核資源,但是由于GIL的存在,使得同一個時刻,只能有一個python的線程在運行,顯然,這是對資源的無恥浪費。
因此,你無法將python的多線程作為提升程序性能的一種手段,對于CPU密集型任務,請使用多進程。雖然如此,python的多線程也并非如大家所吐槽的那樣雞肋,對于I/O密集型任務,python多線程仍然有用武之地。
當一個線程I/O等待時,會釋放GIL,這樣其他線程就可以獲得GIL來執行自己的任務,這就是你編寫多線程爬蟲加快爬取速度的技術依據。
感謝各位的閱讀,以上就是“python的GIL是什么”的內容了,經過本文的學習后,相信大家對python的GIL是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。