在上述代码中,我们创建了两个线程Thread-1和Thread-2。操作系统会为每个线程分配一个** OS 线程**,并在适当的时候切换它们的执行。
不过,Python中的多线程与其他语言不一样的地方在于,它有一个GIL的机制。
GIL是Python解释器的一个重要机制,一个线程在进入运行之前,必须先获得 GIL。
如果 GIL 已被其他线程占用,那么当前线程将等待,直到 GIL 被释放。
GIL 的释放规则如下:
线程执行一定时间后,会主动释放 GIL,以便其他线程可以获取它
线程在执行 I/O 操作时,会释放 GIL,因为 I/O 操作通常会阻塞线程,释放 GIL 可以让其他线程有机会运行。