1. 程式人生 > >網路程式設計 - 執行緒鎖

網路程式設計 - 執行緒鎖

一、併發執行時,需要增加執行緒鎖

import threading,time
num = 0
tmp_list=[]
lock = threading.Lock() #獲取鎖例項;
def run(n):
lock.acquire()#獲取執行緒鎖;
global num
num+=1
lock.release() #釋放執行緒鎖;

for i in range(50):
t = threading.Thread(target=run,args=("thread-%s"% i,))
tmp_list.append(t)
t.start()
for i in tmp_list:

i.join()
print (num)
二、併發時,設定訊號量
import threading,time
semaphore = threading.BoundedSemaphore(3) #設定訊號量;
def run(n):
semaphore.acquire()#訊號量獲取鎖;
time.sleep(1)
print ("running thread is:%s" % n)
semaphore.release() #訊號量解鎖;
for i in range(50):
t = threading.Thread(target=run,args=("thread-%s"% i,))

t.start()
訊號量,最多同時執行3個執行緒,並其中一個執行緒結束後,其它執行緒加入。