GIL: Global Interfere Lock,全局解释器锁,每个线程在执行代码时,必须获先取GIL锁,并且这个锁是唯一的。
这是cpython解释器(虚拟机)留下的历史问题,jpthon、ppython等其他语言书写的解释器不存在该问题,python语言起始于1991年,当时的多线程还没有普及,因此未能充分考虑到此问题。
弊端:同一时间只能有一个线程在运行,CPU无论是多核的还是单核的,线程也无论是主线程还是子线程。
优势:在某一线程遇到IO阻塞时,会释放GIL锁,其他线程开始执行代码,有点像时间片轮转,极短时间内切换线程,感觉是每个线程是同时执行的,可以理解为雨露均沾的意思。
python开发者guido曾经尝试取消GIL锁,但是经过尝试后,发现效率下降,因此至今保留GIL锁。
解决方案:通过多进程可以实现多核CPU的一同执行,真正实现并行。
原文:https://www.cnblogs.com/henji1266/p/12078150.html