繁体   English   中英

当任何一个进程完成时,如何终止池?

[英]How to terminate a pool when any of the processes finishes?

我已按照建议使用以下代码,但在第一个工作人员找到匹配项后,池仍未终止。 理想的结果是让20个进程运行函数f,并且当它们中的任何一个找到匹配项时,池都应终止,而实际上,我必须等到所有工作人员都找到一个匹配项时才发生。

from multiprocessing import Pool
import numpy as np


def f(z):..Output omitted


class Worker():
    def __init__(self, workers):
        self.pool = Pool(processes=workers)

    def callback(self, result):
        if result:
            self.pool.terminate()

    def do_job(self):

        self.pool.map_async(f,range(1,20), callback=self.callback)
        self.pool.close()
        self.pool.join()


if __name__=="__main__":
    w = Worker(20)
    w.do_job()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM