GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行。
在刚了解python中的GIL时,很多小伙伴应该和我一样,不明白既然GIL为进程上了一把锁,使进程内的其他线程无法运行,python中为什么还有多线程的概念?还有在多线程中再加锁?
其实,在python中,并不是等待一个线程结束之后再执行另外一个线程。举个例子,两个线程分别对一个全局变量total进行加和减。
total = 0
def add(name):
global total
for i in range(100):
total += 1
print('当前是%s线程,i的值为%s' % (name,total))
def desc(name):
global total
for i in range(100):
total -= 1
print