信号量
信号量就是控制同一时刻并发执行的任务数
-
信号量:互斥锁+容器 容器里同时最大可以存放五把钥匙,谁先拿到钥匙并释放后释放后,外面的才能继续抢钥匙
-
十个线程,五把钥匙,一开启肯定有五个线程能拿到钥匙,只有这五把钥匙谁先解锁了,之后的五个线程才能有抢钥匙的机会。
import threading,time
#semaphore=threading.Lock()
def run(n):
semaphore.acquire()
time.sleep(1)
print("run the thread:%s\n"%n)
semaphore.release()
pass
if __name__ == '__main__':
semaphore=threading.BoundedSemaphore(5) #最多允许5个线程同时运行
for i in range(20):
t=threading.Thread(target=run,args=(i,))
t.start()
while threading.active_count()!=1:
pass #print threading.active_count()
else:
print("-------all thread done-----")