首頁 > 後端開發 > Python教學 > Python關於event物件用法的實例詳解

Python關於event物件用法的實例詳解

Y2J
發布: 2017-05-03 16:32:08
原創
2349 人瀏覽過

這篇文章主要介紹了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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板