线程Event

Event是一个简单的同步的对象。

event = threading.Event()  生成event对象

event.set()  设置标志位

event.clear()  清空标志位

event.wait()   等待标志位被设定(阻塞)

event.is_set()  标志位是否被设定

红绿灯模型,假如设置了标志位代表绿灯,清空标志位代表红灯

#coding=utf-8

import threading
import time

event = threading.Event()

def lighter():
    n = 1
    while True:
        if n > 10 and n <= 20:
            event.set()
            print u'绿灯亮了{}秒'.format(n - 10)
        elif n > 20:
            event.clear()
            n = 0
        else:
            print u'红灯亮了{}秒'.format(n)
        n += 1
        time.sleep(1)

def car():
    while True:
        if event.is_set():
            print u'行驶中...'
        else:
            print u'红灯亮,车停了'
            event.wait()
            print u'绿灯亮,车继续跑'
        time.sleep(1)


tl = threading.Thread(target=lighter)
tl.start()

tc = threading.Thread(target=car)
tc.start()

红灯亮了1秒
红灯亮,车停了
红灯亮了2秒
红灯亮了3秒
红灯亮了4秒
红灯亮了5秒
红灯亮了6秒
红灯亮了7秒
红灯亮了8秒
红灯亮了9秒
红灯亮了10秒
绿灯亮了1秒绿灯亮,车继续跑

行驶中...绿灯亮了2秒

行驶中...绿灯亮了3秒

行驶中...绿灯亮了4秒

绿灯亮了5秒行驶中...

行驶中...绿灯亮了6秒

行驶中...绿灯亮了7秒

行驶中...绿灯亮了8秒

行驶中...绿灯亮了9秒

行驶中...绿灯亮了10秒

行驶中...
红灯亮了1秒

猜你喜欢

转载自www.cnblogs.com/allenzhang-920/p/10201110.html