一个进程失败后如何终止multiprocess.pool.map

时间:2019-11-18 20:59:16

标签: python python-multiprocessing scipy-optimize

我有一个样本数组,我必须适合每个样本。我有约500个样本,我想并行拟合所有数据。没问题。我只是可以通过以下方式在python中使用多进程模块,

import numpy as np
import scipy.optimize as opt
import multiprocessing as mp

# load data (samples, independent variables)
data, X = function_that_loads_data()


def fit_func(x, *p):
    """ My fit function is more complicated. This is just a simplified example """
    return x*p[0] + p[1]


def mp_wrapper(func_args):
    args, kwargs = func_args
    popt, pcov = opt.curve_fit(*args, **kwargs)
    return popt


func_args = [((fit_func, X, dat), {'p0': [1.0, 2.0], 'method': 'lm'}) for dat in data]
pl = mp.Pool(10)
fit_values = pl.map(mp_wrapper, func_args)

很好。但是,由于我的数据嘈杂,我希望其中一些样本会产生错误。我想在至少一个进程死于我时终止mp.Pool,这样我就不必等待其余数据被处理。我该怎么做?

0 个答案:

没有答案