我使用 multiprocessing.pool 函数创建了一个 Python 进程池,其中任何进程都执行类似的工作。这是为了同时完成更多工作。
我希望所有任务都等待一个事件/信号/semafore 或其他使任务处于休眠状态直到收到信号的对象。他们将执行自己的工作,然后返回睡眠状态,等待该事件再次触发。
程序中的其他任务有工作需要执行时会触发该事件。
我不确定当其他任务需要执行工作时可以使用什么来发布事件。我不知道如何让这些任务等待该信号。
使用 Pool() 时,任务是不同的进程,但它们都需要从某种公共信号中唤醒。
您可以使用
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