Event事件
作用:用来控制线程的执行,由一些线程去控制另一些线程。
from threading import Event
from threading import Thread
import time
#调用Event类实例化一个对象
e=Event()
#若是该方法出现在任务中,则为False,阻塞
# e.wait()#False
#若该方法出现在任务中,则将其他线程的False改为True,进入就绪态与运行态
# e.set()#True
def light():
print('红灯亮...')
time.sleep(5)
#应该开始发送信号,告诉其他线程准备执行
e.set()#将car中的False变成True
print('绿灯亮')
def car(name):
print(f'{name}正在等待红灯。。。')
#让所有汽车任务进入阻塞态
e.wait()#False
print(f'{name}开始飘逸')
#让一个light线程任务,控制多个car线程任务
t=Thread(target=light)
t.start()
for line in range(10):
t=Thread(target=car,args=(f'童子军坦克{line}号',))
t.start()
'''红灯亮...
童子军坦克0号正在等待红灯。。。
童子军坦克1号正在等待红灯。。。
童子军坦克2号正在等待红灯。。。
童子军坦克3号正在等待红灯。。。
童子军坦克4号正在等待红灯。。。
童子军坦克5号正在等待红灯。。。
童子军坦克6号正在等待红灯。。。
童子军坦克7号正在等待红灯。。。
童子军坦克8号正在等待红灯。。。
童子军坦克9号正在等待红灯。。。
绿灯亮
童子军坦克4号开始飘逸
童子军坦克6号开始飘逸
童子军坦克7号开始飘逸
童子军坦克0号开始飘逸
童子军坦克3号开始飘逸
童子军坦克5号开始飘逸
童子军坦克2号开始飘逸
童子军坦克8号开始飘逸
童子军坦克1号开始飘逸
童子军坦克9号开始飘逸'''from thr