GIL与线程互斥锁

1、GIL与线程互斥锁的区别

(1)线程互斥锁是python代码层面的锁,解决了python程序中多线程共享资源的问题

(2)GIL是python解释器层面的锁,只在CPython解释器中存在,解决了解释器中多线程竞争资源的问题

2、python的线程虽然是真正的线程,但解释器可执行代码时,有一个GIL锁,任何python线程执行前,必须先获取GIL锁,然后每执行一定字节码,解释器就会释放GIL锁,让其他线程有机会执行。

3、GIL对程序的影响

(1)python中同一时刻有且只有一个线程执行

(2)python中的多线程,由于GIL的存在,无法利用多核CPU

(3)python中多线程不适合运行计算密集型程序,计算密集型的任务需要大量计算,消耗cpu资源,如果程序需要进行大量计算,利用多核CPU,可以使用多进程代替多线程

4、如何改善GIL?

(1)更换更高版本的解释器,从3.2开始,对解释器进行了优化

(2)更换解释器,因为GIL仅在CPython中存在

(3)python为了解决程序使用多核问题,使用多进程替代了多线程

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值