Python編程之event對象的用法實例分析
本文實例講述了Python編程中event對象的用法。分享給大家供大家參考,具體如下:
Python提供了Event對象用于線程間通信,它是由線程設(shè)置的信號標(biāo)志,如果信號標(biāo)志位為假,則線程等待直到信號被其他線程設(shè)置成真。這一點似乎和windows的event正好相反。 Event對象實現(xiàn)了簡單的線程通信機制,它提供了設(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)部信號為真的時候才會很快的執(zhí)行并完成返回。當(dāng)Event對象的內(nèi)部信號標(biāo)志位假時,則wait方法一直等待到其為真時才返回。
可以使用Event讓工作線程優(yōu)雅地退出,示例代碼如下:
# 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程序設(shè)計有所幫助。
相關(guān)文章
wxpython 最小化到托盤與歡迎圖片的實現(xiàn)方法
這篇文章主要分享一個python實例代碼,使用wxpython實現(xiàn)最小化到托盤與歡迎圖片,需要的朋友可以參考下2014-06-06封裝?Python?時間處理庫創(chuàng)建自己的TimeUtil類示例
這篇文章主要為大家介紹了封裝?Python?時間處理庫創(chuàng)建自己的TimeUtil類示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2023-05-05命令行運行Python腳本時傳入?yún)?shù)的三種方式詳解
這篇文章主要介紹了命令行運行Python腳本時傳入?yún)?shù)的三種方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10Python?matplotlib?seaborn繪圖教程詳解
Seaborn是在matplotlib的基礎(chǔ)上進行了更高級的API封裝,從而使得作圖更加容易,在大多數(shù)情況下使用seaborn就能做出很具有吸引力的圖。本文將詳細講解如何利用Seaborn繪制圖表,需要的可以參考一下2022-03-03