1、什么是GIL(这是Cpython解释器)
GIL本质就是一把互斥锁,那既然是互斥锁,原理都一样,都是让多个并发线程同一时间只能有一个执行。
即:有了GIL的存在,同一进程内多个线程同一时刻只能有一个在运行,意味着在Cpython中一个进程下的多个
线程无法实现并行=====>意味着无法利用多核优势但不影响并发的实现
2、为何要有GIL
3、如何用
from threading import Thread,Lock
import time
mutex=Lock() #生成锁赋给变量
n=100
def task():
global n #声明n就表示n为100
mutex.acquire()
temp=n
time.sleep(0.1)
n=temp-1
mutex.release()
if __name__ == '__main__':
t_l=[]
start_time=time.time()
for i in range(3):
t=Thread(target=task)
t_l.append(t)
t.start()
for t in t_l:#让他变成串行
t.join()
stop_time=time.time()
print(n)
print(stop_time-start_time)