线程_GIL
#GIL:解释器级别的锁(保护的就是解释器级别的数据),同一时间只能有一个线程来执行 from threading import Thread import time n=100 def work(): time.sleep(0.1) global n temp=n time.sleep(0.1) n=temp-1 if __name__=="__main__": l=[] start=time.time() for i in range(100): t=Thread(target=work) l.append(t) t.start() for i in l: t.join() print(time.time()-start,n) ''' 0.22175168991088867 99 '''
#Lock:保护自己共享数据安全 from threading import Thread,Lock import time n=100 def work(): time.sleep(0.1) global n mutex.acquire() temp=n time.sleep(0.1) n=temp-1 mutex.release() if __name__=="__main__": mutex=Lock() l=[] start=time.time() for i in range(100): t=Thread(target=work) l.append(t) t.start() for i in l: t.join() print(time.time()-start,n) ''' 10.121458768844604 0 '''
#互斥锁与join from threading import Thread,Lock import time n=100 def work(): time.sleep(0.1) global n temp=n time.sleep(0.1) n=temp-1 if __name__=="__main__": start=time.time() for i in range(100): t=Thread(target=work) t.start() t.join() print(time.time()-start,n) ''' 20.060720682144165 0 '''
posted on 2020-03-28 22:01 happygril3 阅读(82) 评论(0) 收藏 举报
浙公网安备 33010602011771号