GIL

Posted quqinchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GIL相关的知识,希望对你有一定的参考价值。

1、什么是GIL?

GIL本质上是互斥锁,可以将并发运行变为串行,以此来控制同一时间内共享数据只能被一个任务修改,保证时间安全

2、GIL应用场景

技术分享图片

在一个python 进程内,包含了许多线程(主线程,解释器级别线程);主线程开启了许多其他线程如(线程1,线程2,线程3),解释器级别线程如垃圾回收线程,因为他们在一个进程内所以数据是共享的,如果涉及到对共同数据100的修改,线程1执行是x=100,垃圾回收执行的是回收数据100的操作,要解决这种冲突,进行加锁处理,谁拿到权限谁先执行,保证python解释器同一时间只能执行一个任务代码

3、GIL与LOCK对比

1)GIL保护的是解释器级的数据,LOCK保护用户自己的数据,需要自定义互斥锁;

(2)GIL相当于执行权限,会在任务无法执行的情况下强行释放,自定义互斥锁即使任务无法执行也不会释放

技术分享图片

线程py1执行流程:获取公共数据,先拿到了GIL LOCK,启动python解释器,调用操作系统,分配cpu给线程py1;执行完毕后更新共享时间池,释放GIL LOCK;

 

以上是关于GIL的主要内容,如果未能解决你的问题,请参考以下文章

GIL锁

GIL全局解释器锁

GIL全局解释器锁及协程

015-Python提高01-GIL拷贝私有

什么是python的全局解释锁(GIL)

117 GIL全局解释器锁