一、什么是GIL:
GIL的全称是:Global Interpreter Lock,意思就是全局解释器锁,GIL并不是python的特性, 只在Cpython解释器里引入的一个概念, 而在其他的语言编写的解释器里就没有这个GIL例如:Jpthon
二、这个并没有解决数据共享出现不同步的问题:
import threading
# 子线程死循环
def test():
while True:
pass
t1 = threading.Thread(target=test)
t1.start()
# 主线程死循环
while True:
pass
代码测试无论开几个,都只是跑满cpu100%,相当于一核心也就是单线程
因此,多线程里的并发是假的,其实就是GIL
三、哪种情况用多线程和多进程:
计算机密集型和IO密集型:
只要在进行耗时的IO操作的时候,能释放GIL,所以只要在IO密集型的代码里,用多线程就很合适
用于计算密集型,比如计算某一个文件夹的大小。