实现线程与线程之间的交互。主要方法有:
threading.Event():实例化
event.set():设置标志位
event.clear():清除标志位
event.is_set():判断标志位是否被设置
event.wait():等待标志位被设置

 

交通信号灯举例:

import threading,time
event = threading.Event()
event.set()   # Firstly, green light on
def light():
    count = 0
    event.set()
    while True:
        if count < 10:   # change green light
            event.set()
            print("\033[42;1mGreen light is on...\033[0m")
        elif count < 13:   # change yellow light
            print("\033[43;1mYellow light is on...\033[0m")
        elif count < 20:   # change red light
            event.clear()
            print("\033[41;1mRed light is on...\033[0m")
        else:
            count = 0
        time.sleep(0.5)
        count += 1

def car(name):
    while True:
        if event.is_set():
            print("[%s] running..." % name)
            time.sleep(1)
        else:
            print("[%s] waiting green light on..." % name)
            event.wait()
            print("\033[42;1mGreen light is on, [%s] running...\033[0m" % name)

light = threading.Thread(target=light)
light.start()
car = threading.Thread(target=car,args=('DiDi',))
car.start()

 

 posted on 2017-12-06 14:03  super2feng  阅读(166)  评论(0)    收藏  举报