Python中的GIL锁是如何工作的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计667个文字,预计阅读时间需要3分钟。
GIL是Python解释器CPython中的一种技术,它是一种全局解释器锁。它的作用是全局锁,本质上类似操作系统的互斥锁(Mutex)。每个Python线程在CPython解释器中执行时,都会先获取GIL,确保同一时间只有一个线程在执行Python字节码。这样做可以防止多个线程同时执行Python代码时发生冲突,但同时也限制了CPython在多核处理器上的并行性能。
什么是GIL锁
GIL,是最流行在 Python 解释器 CPython 中的一个技术术语。它的意思是全局解释器锁,本质上是类似操作系统的 Mutex。每一个 Python 线程,在 CPython 解释器中执行时,都会先锁住自己的线程,阻止别的线程执行。
CPython会轮流执行 Python 线程。这样一来,用户就会看到线程交替执行,似乎是并行,但是其实只有一个线程在运行。现在都是多核CPU,可以实现线程的并行运行,所以Python中并不是和使用多线程。
GIL如何工作
下面这张图,就是一个 GIL 在 Python 程序的工作示例。其中,Thread 1、2、3 轮流执行,每一个线程在开始执行时,都会锁住 GIL,以阻止别的线程执行;同样的,每一个线程执行完一段后,会释放 GIL,以允许别的线程开始利用资源。
CPython 中还有另一个机制,叫做 check_interval,意思是 CPython 解释器会去轮询检查线程 GIL 的锁住情况。每隔一段时间,Python 解释器就会强制当前线程去释放 GIL,这样别的线程才能有执行的机会。
本文共计667个文字,预计阅读时间需要3分钟。
GIL是Python解释器CPython中的一种技术,它是一种全局解释器锁。它的作用是全局锁,本质上类似操作系统的互斥锁(Mutex)。每个Python线程在CPython解释器中执行时,都会先获取GIL,确保同一时间只有一个线程在执行Python字节码。这样做可以防止多个线程同时执行Python代码时发生冲突,但同时也限制了CPython在多核处理器上的并行性能。
什么是GIL锁
GIL,是最流行在 Python 解释器 CPython 中的一个技术术语。它的意思是全局解释器锁,本质上是类似操作系统的 Mutex。每一个 Python 线程,在 CPython 解释器中执行时,都会先锁住自己的线程,阻止别的线程执行。
CPython会轮流执行 Python 线程。这样一来,用户就会看到线程交替执行,似乎是并行,但是其实只有一个线程在运行。现在都是多核CPU,可以实现线程的并行运行,所以Python中并不是和使用多线程。
GIL如何工作
下面这张图,就是一个 GIL 在 Python 程序的工作示例。其中,Thread 1、2、3 轮流执行,每一个线程在开始执行时,都会锁住 GIL,以阻止别的线程执行;同样的,每一个线程执行完一段后,会释放 GIL,以允许别的线程开始利用资源。
CPython 中还有另一个机制,叫做 check_interval,意思是 CPython 解释器会去轮询检查线程 GIL 的锁住情况。每隔一段时间,Python 解释器就会强制当前线程去释放 GIL,这样别的线程才能有执行的机会。

