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)文章
Python調(diào)用工具包實現(xiàn)發(fā)送郵件服務(wù)
這篇文章主要為大家詳細(xì)介紹了Python圖畫調(diào)用工具包實現(xiàn)發(fā)送郵件服務(wù)的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05
Pytorch加載部分預(yù)訓(xùn)練模型的參數(shù)實例
今天小編就為大家分享一篇Pytorch加載部分預(yù)訓(xùn)練模型的參數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Windows下Python2與Python3兩個版本共存的方法詳解
這篇文章主要介紹了Windows下Python2與Python3兩個版本共存的方法,文中介紹的很詳細(xì),對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。2017-02-02
Python的Flask框架中實現(xiàn)分頁功能的教程
這篇文章主要介紹了Python的Flask框架中實現(xiàn)分頁功能的教程,文中的示例基于一個博客來實現(xiàn),需要的朋友可以參考下2015-04-04

