這篇文章主要介紹了Python程式設計之event物件的用法,結合實例形式分析了event物件在線程通訊中的作用與使用方法,需要的朋友可以參考下
本文實例講述了Python程式設計中event物件的用法。分享給大家供大家參考,具體如下:
Python提供了Event對像用於線程間通信,它是由線程設置的信號標誌,如果信號標誌位為假,則線程等待直到信號被其他線程設定成真。這一點似乎和windows的event正好相反。 Event物件實作了簡單的執行緒通訊機制,它提供了設定訊號,清除訊號,等待等待用於實現執行緒間的通訊。
1.設定訊號
使用Event的set()方法可以設定Event物件內部的訊號標誌為真。 Event物件提供了isSet()方法來判斷其內部訊號標誌的狀態,當使用event物件的set()方法後,isSet()方法傳回真.
2.清除訊號
使用Event物件的clear()方法可以清除Event物件內部的訊號標誌,即將設為假,當使用Event的clear方法後,isSet()方法傳回假
3.等待
Event物件wait的方法只有在內部訊號為真的時候才會很快的執行並完成返回。當Event物件的內部訊號標誌位元假時,則wait方法一直等待到其為真時才返回。
可以使用Event讓工作執行緒優雅地退出,範例程式碼如下:
# make thread exit nicely class MyThread9(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): global event while True: if event.isSet(): logging.warning(self.getName() + " is Running") time.sleep(2) else: logging.warning(self.getName() + " stopped") break; event = threading.Event() event.set() def Test9(): t1=[] for i in range(6): t1.append(MyThread9()) for i in t1: i.start() time.sleep(10) q =raw_input("Please input exit:") if q=="q": event.clear() if __name__=='__main__': Test9()
以上是Python關於event物件用法的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!