线程_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)    收藏  举报

导航