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