阅读背景:

day 31协程

来源:互联网 

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



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: