如何让Python任务池等待唤醒事件

问题描述 投票:0回答:1

我使用 multiprocessing.pool 函数创建了一个 Python 进程池,其中任何进程都执行类似的工作。这是为了同时完成更多工作。

我希望所有任务都等待一个事件/信号/semafore 或其他使任务处于休眠状态直到收到信号的对象。他们将执行自己的工作,然后返回睡眠状态,等待该事件再次触发。

程序中的其他任务有工作需要执行时会触发该事件。

我不确定当其他任务需要执行工作时可以使用什么来发布事件。我不知道如何让这些任务等待该信号。

使用 Pool() 时,任务是不同的进程,但它们都需要从某种公共信号中唤醒。

python events multiprocessing wait wakeup
1个回答
0
投票

您可以使用

Event
来实现它。

from multiprocessing import Pool, Event

def worker(event):
    while True:
        event.wait() # wait for start signal
        # do something
        event.clear() # back to on-hold

event = Event()

with Pool(processes=4) as pool:
    for _ in range(4):
        pool.apply_async(worker, (event,))
    pool.close()
    pool.join()

event.set() # trigger
© www.soinside.com 2019 - 2024. All rights reserved.