Python threading模塊提供Event對象用於線程間通訊。它提供了一組、拆除、等待用於線程間通訊的其餘方法。python
event它是溝通中最簡單的一個過程之中,一個線程產生一個信號,號。Python 經過threading.Event()產生一個event對象。event對象維護一個內部標誌(標誌初始值爲False),經過set()將其置爲True。wait(timeout)則用於堵塞線程直至Flag被set(或者超時,可選的),isSet()用於查詢標誌位是否爲True,Clear()則用於清除標誌位(使之爲False)。app
舉例:線程
下述是一段模擬「client監聽並處理硬件port消息」的程序片斷:硬件port消息發送時機是隨機的(經過random實現),read線程負責讀消息並通知parse線程去處理。code
import threading import time import random L = [] def read(): count =2 while 1: count = random.randint(0,1) if count: L.append('Hello, darling,I love you\n') L.append('You are so sweet~\n') if L: evt.set() print 'new rcvd sent to \'parse thread\'\n' time.sleep(2) print 'never here\n' def parse(): while 1: if evt.isSet(): evt.clear() print repr(len(L)) +' messages to parse:\n' while L: print L.pop(0) print 'all msg prased,sleep 2s\n' time.sleep(2) else: print 'no message rcved\n' time.sleep(2) print 'quit parse\n' if __name__ == '__main__': evt = threading.Event() R = threading .Thread(target = read) P = threading .Thread(target = parse) R.start() P.start() time.sleep(2) R.join() P.join() #time.sleep(2) print 'end'
版權聲明:本文博客原創文章,博客,未經贊成,不得轉載--「http://blog.csdn.net/suipingsp」。對象