[python] GIL
http://www.dabeaz.com/python/UnderstandingGIL.pdf
翻译水平不咋地,建议大家看原版英文,翻译只给自己参考,方便下次观看
A.python线程是真实的系统线程
如1.POSIX threads (pthreads)
2.Windows threads
B.被主机操作系统全权管理
C.代表python解释器进程的被执行线程
1.禁止并发执行
2.包含全局解释器锁(GIL),GIL确保每次解释器只解释一个线程
3.还有许多其他详情
1.在GIL下,多任务之间合作执行的方式如图所示
2.在一个线程执行时,会保持GIL锁,切换线程时会释放GIL
3.GIL锁类似于IO锁(send,recv,write,read)
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菜鸟学学就好,反正说多了我也不懂。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341