#条件:Condition、notify通知、notify_all、wait #条件 = 递归锁 + wait功能 #条件可以让主线程控制多少个子线程可以执行。 import threading def play(con,i): con.acquire() #所有人都拿到了钥匙 con.wait() #排队玩游戏,等待工作人员放行,收到notify发过来的信号之后就不再阻塞。 print('游客%s可以玩游戏了'%i) con.release() con = threading.Condition() #条件对象 for i in range(10): #有十个游客 t = threading.Thread(target=play,args=(con,i)) t.start() while True: inp = input('放行人数:') #工作人员每次可以放行多少个人 if inp == 'q':break con.acquire() #工作人员拿到钥匙 con.notify(int(inp)) #发出通知信号:通知放行多少个人,notify后面必须跟int类型。 con.release() #notify_all:放行所有线程 # while True: # inp = input('放行人数:') # if inp == 'q':break # con.acquire() # if inp == 'all': # con.notify_all() #放行所有人 # else: # con.notify(int(inp)) # con.release()