Я использовал следующий код, как рекомендовано, но все равно пул не завершается после того, как первый работник найдет совпадение.Желаемый результат состоит в том, чтобы иметь 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()