网络编程

一、并发执行时,需要增加线程锁

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个线程,并其中一个线程结束后,其它线程加入。



原文地址:https://www.cnblogs.com/wulafuer/p/10234235.html