[python] GIL

http://www.dabeaz.com/python/UnderstandingGIL.pdf
翻譯水平不咋地,建議大家看原版英文,翻譯只給自己參考,方便下次觀看

Python Threads

A.python線程是真實的系統線程
如1.POSIX threads (pthreads)
2.Windows threads
B.被主機操作系統全權管理
C.代表python解釋器進程的被執行線程

什麼是python GIL

1.禁止併發執行
2.包含全局解釋器鎖(GIL),GIL確保每次解釋器只解釋一個線程
3.還有許多其他詳情

線程的運行機制

[python] GIL
1.在GIL下,多任務之間合作執行的方式如圖所示
2.在一個線程執行時,會保持GIL鎖,切換線程時會釋放GIL
3.GIL鎖類似於IO鎖(send,recv,write,read)

CPU限制任務

[python] GIL
1.CPU限制線程,不會通過執行IO限制,通過特殊方式
2.使用CHECK方式每100"ticks"
3.通過sys.setcheckinterval()改變CHECK的間隔
ps:tick是python VM裏的指令單元,與時間單位無關

ps2:週期CHECK的內容:
1.重置tick計數
2.給主線程傳送信號句柄
3.釋放GIL
4.請求GIL
5.原文給出了C代碼來解釋CHECK的方式,這裏就不粘貼了

後面的章節都是源碼分析,就不翻譯了,另外python3.2更新了GIL,不過並沒有卵用,依然不能發揮多核優勢,這篇文章主要介紹了python的GIL特性和原理,作爲pyhton菜鳥學學就好,反正說多了我也不懂。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章