【Python】Python中GIL的作用是什么?

Python中的GIL(Global Interpreter Lock)即全局解释器锁,它的主要作用是确保同一时间只有一个线程在执行Python字节码。

GIL确保了同一进程中的多线程安全,防止多个线程同时执行时导致数据混乱。比如:

## python www.itzhimei.com 代码
import threading

count = 0

def increment():
    global count
    for _ in range(100):
        count += 1

t1 = threading.Thread(target=increment)
t2 = threading.Thread(target=increment)
t1.start()
t2.start()
t1.join()
t2.join()

print(count) # 最后输出200

如果没有GIL,两个线程同时执行count += 1时可能只增加1,结果就错误了。

但GIL也带来了阻塞问题,一个执行CPU密集型代码的线程可能会长时间占用GIL,阻塞其他线程。

所以Python多线程适合IO密集型任务,对CPU密集型任务并发效果不佳。了解GIL的原理可以避免一些并发问题。