简述python中的GIL(全局解释器锁)

提到GIL,大家都想到这是python处理多线程程序的一个特有的方式。其实然也,GIL并不是python语言特有的特性,而是在实现python解释器(cpython)时引入的一个概念,并且是只有(cpython)这种解释器才会有GIL机制,像(jpython),(pypy),(psyco)这些解释器都是没有GIL机制的。然而cpython是大部分python的默认解释环境,所以潜移默化的使用python的开发者就错误认为这是python语言的一种机制。

那么这个GIL到底是什么呢?为什么有人说它是python的一个缺陷呢?

GIL(global interpreter lock)全局解释器锁。都知道python是解释性语言,那么在运行python程序时,就需要调用python的解释器对python进行编译和解释,那么对于多线程程序而言,几个程序同时进行,那就有可能造成数据不完整或者失真。

举个例子: 例如有一个全局变量用来记录商场货架上苹果的数量,那么现在有很多人同时来买苹果,模拟多线程同时进行,那么都要前往货架区选苹果,然后苹果架上的苹果数量就会减少。那如果没有秩序,所有人都一窝蜂一样跑去抢苹果,你也去取,他也去取,万一货架上的苹果数量不够了咋办。有人说那没有苹果就不买了呗,是的,人在这种情况下选择不买了,但是机器不行啊,它会检测只要有人买苹果,那么记录货架上苹果数量的全局变量就会减少,那这样就有可能造成这个变量变成负数,那这样显然就不符合我们设计这个程序的初衷了,苹果数量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值