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()` 在多进程之间共享事件的基本方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了