信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁执行任务
from threading import Thread,Semaphore,current_thread import time,random sm=Semaphore(5) def task(): # sm.acquire() # print("%s in" % current_thread().getName()) # time.sleep(random.randrange(1,4)) # sm.release() with sm: print("%s in" % current_thread().getName()) time.sleep(random.randrange(1, 4)) if __name__=="__main__": for i in range(100): t=Thread(target=task) t.start()
原文:https://www.cnblogs.com/yaya625202/p/9043389.html