GIL锁--day35

"""
----GIL锁-----

什么是GIL
全局解释器锁 ,是加在解释器上的互斥锁,

为什么需要GIL
由于CPython的内存管理是非线程安全,于是CPython就给解释器加了个锁,解决了安全问题 但是降低了效率
另外 虽然有解决方案 但是由于牵涉太多,一旦修改则 很多以前的基于GIL的程序都需要修改,所以变成了历史遗留问题

GIL带来的问题
即使在多核处理器下 也无法实现真正的并行

总结:
1.在单核情况下,无论是IO密集还是计算密集 GIL都不会产生影响
2.如果是多核下,IO密集型会受到GIL的影响,但是很明显IO速度远比计算速度慢
3.IO密集型用多线程,因为多线程开销小,节省资源, 对于计算密集型 应该使用多进程,因为在CPython多线程是无法并行的

GIL与自定义锁的区别
GIL使用用于保护解释器相关的数据,解释器也是一段程序,肯定有其定义各种数据
GIL并不能保证你自己定义的数据的安全,所以一旦你的程序中出现了多线程共享数据时就需要自己加锁
"""

猜你喜欢

转载自www.cnblogs.com/wenchen/p/10214220.html