天天看點

python中的GIL(全局解釋器鎖)GIL

GIL

GIL全稱Global Interpreter Lock,是一把全局排他鎖,即全局解釋器鎖。每個線程在執行的過程都需要先擷取GIL,保證同一時刻隻有一個線程可以執行代碼。

Python中有關GIL的特性:

  • 多程序才能真的發揮多并發,而多線程是假并發,若想實作并發推薦使用程序;
  • 多線程同時僅有一個在執行,是假并發/假多任務,實際是單任務,這是python解釋器的本身原因。
  • GIL遺留原因:官網預設Python使用C語言的cpython解釋器,而C語言解釋器線程執行時先選擇性上鎖,GIL解釋器鎖會保證線程在同一時刻隻有一個在做,即GIL是Python利用C語言開發時遺留的曆史問題
  • 全局解釋性鎖:多線程執行前先搶鎖,保證同一時刻僅有一個線程在執行
  • 多線程還是比單線程快 ,多線程在一個線程執行io程式操作過程中會自動進行另一個線程

GIL的缺點: 不适合計算密集型程式

  • 計算密集型程式:沒有等待時間的程式-程序
  • io密集型:讀寫模式或有等待時間的程式-線程、協程

GIL的解決方法:

  • 換非C語言版本python解釋器 例如: jython HXH.py
  • python中部分執行代碼用C語言代碼代替
  • 用多程序
上一篇: WINDOW.txt
下一篇: UPPER.txt