`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()` 在多進程之間共享事件的基本方法。