聊聊Python中的GIL https://www.cnblogs.com/ArsenalfanInECNU/p/9968621.html

发布时间 2023-03-24 11:20:47作者: ty1539

抄自: https://www.cnblogs.com/ArsenalfanInECNU/p/9968621.html
GIL的全称是 Global Interpreter Lock,全局解释器锁。因为Python的执行依赖于解释器。Python最初的设计理念在于,为了解决多线程之间数据完整性和状态同步的问题设计为在任意时刻只有一个线程在解释器中运行。而当执行多线程程序时,由GIL来控制同一时刻只有一个线程能够运行。即Python中的多线程是表面多线程,也可以理解为fake多线程,不是真正的多线程。

可能有的同学会问,同一时刻只有一个线程能够运行,那么是怎么执行多线程程序的呢?其实原理很简单:解释器的分时复用。即多个线程的代码,轮流被解释器执行,只不过切换的很频繁很快,给人一种多线程“同时”在执行的错觉。聊的学术化一点,其实就是“并发”。

再拓展一点“并发”和“并行”的概念:

普通解释:
并发:交替做不同事情的能力
并行:同时做不同事情的能力
专业术语:
并发:不同的代码块交替执行
并行:不同的代码块同时执行