提问人:Yedidya kfir 提问时间:11/15/2023 最后编辑:jsbuenoYedidya kfir 更新时间:11/15/2023 访问量:59
如何维护进程池
How to maintain a pool of processes
问:
我有一个项目,在其中我运行多个进程来执行多个作业,这些作业通过队列分发。
queue = multiprocessing.Queue()
process = multiprocessing.spawn(
run_alg,
args=(queue,),
nprocs=process_num,
join=False,
)
process.join()
但是,进程可能会在运行过程中停止工作或崩溃。 我想创建一个包含 x 个进程的池,每次关闭进程时,都会创建一个新进程来取代它,直到队列为空。
有可能吗,如何?
答:
0赞
Mark Setchell
11/15/2023
#1
我会启动线程。每个线程都进入一个非常简单的循环:x
while True:
Get args from queue, blocking till received
Start subprocess with args
如果子进程崩溃,线程会再次运行并获取另一个作业,或者可以重试该作业。
评论
multiprocessing.spawn
游泳池
吗?为什么进程“停止工作或崩溃”?如果是由于异常,则不会导致池工作线程终止。请参见多处理行为。泳池例外?