Python事件機(jī)制 事件機(jī)制: import queue from random import randint from threading import Thread from threading import Event class WriteThread(Thread): def __init__(self,queue,WEvent,REvent): Thread.__init__(self) self.queue = queue self.REvent = REvent self.WEvent = WEvent def run(self): data = [randint(1,10) for _ in range(0,5)] self.queue.put(data) print("send Read Event") self.REvent.set() #--> 通知讀線程可以讀了 self.WEvent.wait() #--> 等待寫事件 print("recv write Event") self.WEvent.clear() #-->清除寫事件,以方便下次讀取 class ReadThread(Thread): def __init__(self,queue,WEvent, REvent): Thread.__init__(self) self.queue = queue self.REvent = REvent self.WEvent = WEvent def run(self): while True: self.REvent.wait() #--> 等待讀事件 print("recv Read Event") data = self.queue.get() print("read data is {0}".format(data)) print("Send Write Event") self.WEvent.set() #--> 發(fā)送寫事件 self.REvent.clear() #--> 清除讀事件,以方便下次讀取 q= queue.Queue() WEvent = Event() REvent = Event() WThread = WriteThread( q, WEvent, REvent) RThread = ReadThread(q, WEvent, REvent) WThread.start() RThread.start() 結(jié)果: send Read Event
recv Read Event
read data is [9, 4, 8, 3, 5]
Send Write Event
recv write Event
|
|