multiprocessing.Event()

`multiprocessing.Event()` 是 Python 中的一個類,用於在多進程之間共享布爾變量。這個類提供了一種簡單的併發原語,允許進程之間進行通信。`multiprocessing.Event()` 包裝了一個布爾變量,可以設置爲“已設置”(True)或“未設置”(False)。進程共享 `Event` 實例後,可以檢查事件是否已設置,設置事件,清除事件(將其標記爲未設置),或等待事件被設置。

要使用 `multiprocessing.Event()`,首先需要創建一個 `Event` 實例,然後可以檢查事件是否已設置,設置事件,清除事件,或等待事件被設置。可以通過調用 `is_set()` 函數來檢查事件是否已設置,通過調用 `set()` 函數來設置事件,通過調用 `clear()` 函數來將事件標記爲未設置,通過調用 `wait()` 函數來等待事件被設置。`wait()` 函數還可以傳遞一個“超時”參數,限制進程願意等待事件被設置的時間。

以下是使用 `multiprocessing.Event()` 的一個示例:

```python
from multiprocessing import Process, Event
import time

def task(event, number):
    print(f'Process {number} waiting...')
    event.wait()
    print(f'Process {number} got the event')

if __name__ == '__main__':
    event = Event()  # 創建一個共享的 Event 實例

    processes = [Process(target=task, args=(event, i)) for i in range(5)]  # 創建一組進程

    for process in processes:
        process.start()  # 啓動所有進程

    time.sleep(2)  # 主進程暫停一段時間

    event.set()  # 設置事件,觸發所有子進程

    for process in processes:
        process.join()  # 等待所有子進程結束
```

在這個示例中,首先創建了一個共享的 `Event` 實例。然後創建了一組進程,每個進程都等待事件被設置,然後執行一些工作。主進程暫停了一段時間,然後設置了事件,觸發了所有子進程。最後,主進程等待所有子進程結束。

這就是使用 `multiprocessing.Event()` 在多進程之間共享事件的基本方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章