本文實(shí)例講述了Python編程中event對象的用法。分享給大家供大家參考,具體如下:
Python提供了Event對象用于線程間通信,它是由線程設(shè)置的信號標(biāo)志,如果信號標(biāo)志位為假,則線程等待直到信號被其他線程設(shè)置成真。這一點(diǎn)似乎和windows的event正好相反。 Event對象實(shí)現(xiàn)了簡單的線程通信機(jī)制,它提供了設(shè)置信號,清除信號,等待等用于實(shí)現(xiàn)線程間的通信。
1.設(shè)置信號
使用Event的set()方法可以設(shè)置Event對象內(nèi)部的信號標(biāo)志為真。Event對象提供了isSet()方法來判斷其內(nèi)部信號標(biāo)志的狀態(tài),當(dāng)使用event對象的set()方法后,isSet()方法返回真.
2.清除信號
使用Event對象的clear()方法可以清除Event對象內(nèi)部的信號標(biāo)志,即將其設(shè)為假,當(dāng)使用Event的clear方法后,isSet()方法返回假
3.等待
Event對象wait的方法只有在內(nèi)部信號為真的時(shí)候才會很快的執(zhí)行并完成返回。當(dāng)Event對象的內(nèi)部信號標(biāo)志位假時(shí),則wait方法一直等待到其為真時(shí)才返回。
可以使用Event讓工作線程優(yōu)雅地退出,示例代碼如下:
# 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()
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python Socket編程技巧總結(jié)》、《Python圖片操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選