1. <source id="nejs2"></source>
  2. <video id="nejs2"></video>
    <source id="nejs2"></source>
          1. 首頁 > Python 教程 > Python 提高教程 > 使用事件對象的線程同步

            使用事件對象的線程同步

            更新:

            是時候了解更多 python 中的線程了。在本教程中,我們將介紹一個重要的類,Event類,它在 python 中用于線程同步。

            這個類通過生成事件用于線程間通信。


            Python 多線程:事件對象

            事件類對象提供了一種簡單的機制,用于線程之間的通信,其中一個線程發出事件信號,而其他線程等待它。因此,當一個用于產生信號的線程產生信號時,等待的線程就會被激活。

            一個內部標志被稱為事件標志的事件對象使用,該標志可以使用set()方法設置為真,并且可以使用clear()方法重置為假。

            wait()方法阻塞一個線程,直到它正在等待的事件標志被任何其他線程設置為真..

            以下是與事件對象一起使用的有用函數:

            初始化事件對象

            我們可以如下初始化事件對象:

            import threading
            
            are_you_coming = threading.Event()

            當我們像這樣初始化一個事件對象時,默認情況下內部標志被設置為假。


            isSet()方法

            當且僅當內部標志為真時,此方法返回真。

            import threading
            
            are_you_coming = threading.Event()
            print(are_you_coming.isSet())

            錯誤的


            set()方法

            當對任何事件對象調用此方法時,內部標志被設置為 true。一旦為任何事件調用set()方法,所有等待它的線程都會被喚醒。


            clear()方法

            此方法將內部標志重置為 false。隨后,對調用clear()的事件調用wait()的線程將阻塞,直到內部標志再次不為真。


            wait([timeout])方法

            當我們必須讓任何線程等待一個事件時,我們可以這樣做:在內部標志設置為 false 的事件上調用這個方法,這樣做將阻塞線程,直到事件的內部標志為 true。

            如果入口時內部標志為真,則線程永遠不會被阻塞。否則,它將被阻止,直到另一個線程調用set()將標志設置為真,或者直到可選超時發生。timeout 參數以秒為單位指定操作超時。


            舉個例子

            讓我們有一個簡單的代碼示例來演示Event類對象的用法。

            在下面的代碼中,我們將創建一個線程,讓它等待一個由主線程生成的事件,釋放第一個線程。

            在上面的程序中,我們也使用了wait()方法的timeout屬性。

            當線程調用wait([timeout])方法時,如果在接收事件對象時釋放等待,則該方法返回布爾值真,否則如果由于超時而釋放等待,則該方法返回假。

            為了測試這一點,更改第 18 行作為參數args=(e,4)發送的超時值,并使其小于睡眠時間,例如,將超時值設置為 2 并查看輸出。


            頂部 久久久久99精品成人片毛片_黃色A片三級三級三級无码_日本不卡高清视频v中文字幕_高清欧美视频一区二区
            1. <source id="nejs2"></source>
            2. <video id="nejs2"></video>
              <source id="nejs2"></source>