码迷,mamicode.com
首页 > 其他好文 > 详细

GIL

时间:2018-07-16 14:07:00      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:系统   主线程   info   ima   处理   python解释器   技术分享   执行   自己的   

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

标签:系统   主线程   info   ima   处理   python解释器   技术分享   执行   自己的   

原文地址:https://www.cnblogs.com/quqinchao/p/9317119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!