線程Event

Event是一個簡單的同步的對象。spa

event = threading.Event()  生成event對象code

event.set()  設置標誌位orm

event.clear()  清空標誌位對象

event.wait()   等待標誌位被設定(阻塞)blog

event.is_set()  標誌位是否被設定utf-8

紅綠燈模型,假如設置了標誌位表明綠燈,清空標誌位表明紅燈get

 

#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秒同步

相關文章
相關標籤/搜索