Python3 中的 GIL (Global Interpreter Lock),是一种锁机制,用来控制线程并发访问 Python 解释器的情况。这个锁机制使得在任何给定的时刻,只有一个线程能够执行 Python 代码。
在 Python2 中,由于处理 GIL 的方式不太优化,多线程程序并不能真正地并行执行。但是,Python3 中对 GIL 的实现进行了优化,针对不同的操作,GIL 会在等待 I/O 操作时会释放锁,从而允许其他线程执行。
# 示例代码
import threading
def count(n):
for i in range(1, n + 1):
print(i)
# 创建两个线程
t1 = threading.Thread(target=count, args=(5,))
t2 = threading.Thread(target=count, args=(5,))
# 启动两个线程
t1.start()
t2.start()
# 等待线程执行结束
t1.join()
t2.join()
在这个例子中,我们创建了两个线程来同时执行 count 函数,每个线程都会打印从 1 到 5 的数字。由于 GIL 的存在,这两个线程并不会真正地并行执行,而是通过多次的上下文切换来模拟并发的执行效果。
需要注意的是,对于 CPU 密集型的任务,使用多线程并不会带来明显的性能提升,因为 GIL 会限制线程的并行执行,反而会使得程序变慢。但是在 I/O 密集型的任务中,线程的等待时间相对较长,此时 GIL 会释放锁,允许其他线程执行,从而提高程序的并发性能。
上一篇 html无限弹窗表白代码
下一篇 python3 进程池