這篇文章主要介紹了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 nicelyclass 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()