我有一个样本数组,我必须适合每个样本。我有约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,这样我就不必等待其余数据被处理。我该怎么做?