python--事件event簡單用法

Bob drudgery發表於2019-05-08

在併發程式設計中,涉及到了時間event的使用,首先要先了解到event上執行緒threading模組中的一個類。具體的用法有:
event.set() # 設定標誌位
event.wait() #等待設定標誌位
event.clear() # 清除標誌位

廢話不說,看栗子

from threading import Event, 
Thread
import time
import random

event = Event()

def Light():
    print('紅燈亮了')
    time.sleep(random.randint(1, 2))
    event.set()  # 設定標誌位
    print('綠燈亮了')


# def car(i):
#     print('%s 正在等紅燈' % i)
#     event.wait()  #等待設定標誌位
#     print('%s加油起步' % i)
def car(i):
    print('%s 正在等紅燈' % i)
    event.clear()  # 清除標誌位
    print('%s加油起步' % i)

t1 = Thread(target=Light)
t1.start()

for i in range(3):
    t = Thread(target=car, args=(i,))
    t.start()

'''
事件Event.wait()執行結果
紅燈亮了
0 正在等紅燈
1 正在等紅燈
2 正在等紅燈

綠燈亮了
2加油起步
0加油起步
1加油起步

'''
#事件Event.clear()的執行結果
'''

紅燈亮了
0 正在等紅燈
0加油起步
1 正在等紅燈
1加油起步
2 正在等紅燈
2加油起步


綠燈亮了
'''

相關文章