简析 GIL 全局解释器锁,如何避免GIL,以及和互斥锁的区别

Python线程cpython解释器中默认会有GIL机制

GIL:在一个线程拥有了解释器的访问权之后,其他的线程必须要等待这个线程释放访问权,才能执行,
GIL不确定执行到哪里会释放访问权,有延时操作时或者无延时操作执行了大概一百行会自动释放,换其他线程执行,
所以无论有多少个CPU,Python在同一时刻只会执行一个线程,

如何避免GIL:
1、更换解释器:jpython解释器中没有GIL
2、调用其他语言的代码:如果想要在多核同时执行多线程,子线程可以调用其他语言(例如c语言)的代码块。

GIL和互斥锁的区别:
GIL不确定执行到哪里会释放访问权,换其他的线程执行;
互斥锁可以控制线程切换执行的位置,即控制程序的一些执行顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值