python GIL锁

Posted

tags:

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

GIL锁 全局解释器锁

无论cpu是多少核的,python同一时间执行的线程只有一个,但是给我们的感觉是并发的?因为python在不断的进行上下文的切换。

python的线程是调用操作系统的原生线程。因为调用的是c的接口。当Python要调用这个线程去执行任务的时候,cpu要知道上下文,所以要把上下文关系传给cpu。

 

技术分享

要求是起4个线程,每起一个线程num+1 。因为每个线程都是独立并行执行的,所以他们得到的num都是等于1,那么返回的结果都是2。他们计算的时候也是并行的不是串行的。

可能每个线程分到不同的cpu内核上,但是同一时间只有一个在执行。避免数据出错,Python加一个全局锁,同一时间,只有一个线程能拿到这个数据。去修改。

因为在多线程中,所有变量都由所有线程共享,所以,任何一个变量都可以被任何一个线程修改,因此,线程之间共享数据最大的危险在于多个线程同时改一个变量,把内容给改乱了。

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

Python 36 GIL全局解释器锁

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

python GIL锁 锁 线程池 生产者消费模型

深入理解Python中的GIL(全局解释器锁)

python GIL锁进程池与线程池同步异步

[ Python - 11 ] 多线程及GIL全局锁