scipy.optimize中可调用函数内的Python多处理
我试图在一个由scipy.optimize的最小化函数调用的代价函数中使用多处理。在代价函数中,我有一个循环,我想并行计算 该守则的简化版本如下:scipy.optimize中可调用函数内的Python多处理,python,scipy,python-multiprocessing,scipy-optimize-minimize,Python,Scipy,Python Multiprocessing,Scipy Optimize Minimize,我试图在一个由scipy.optimize的最小化函数调用的代价函数中使用多处理。在代价函数中,我有一个循环,我想并行计算 该守则的简化版本如下: import numpy as np from scipy.optimize import minimize import multiprocessing as mp def cost_fun(Z, arg1, arg2): f = 0 shift_args = [] for k in range(8):
import numpy as np
from scipy.optimize import minimize
import multiprocessing as mp
def cost_fun(Z, arg1, arg2):
f = 0
shift_args = []
for k in range(8):
shift_args.append((arg1[ :, k], arg2[ :, k]))
p = mp.Pool(mp.cpu_count())
R = p.starmap(calc_R, shift_args)
p.close()
f = f + sum([s**2 for s in R])*Z
return f
def calc_R(x, y):
print('You are here')
return x[0] * y[3]
tmp = minimize(fun=cost_fun, x0=1, method='BFGS', options={'disp': False, 'gtol': 1e-10}, args = (np.random.rand(10,8), np.random.rand(10,8)))
代码冻结在R=p.starmap(计算、移位参数)
行
如何进行多重处理
非常感谢您的帮助。这是否回答了您的问题?不。在这个问题上,他试图并行地进行优化,我只需要在优化的代价函数中并行地进行计算。你能提供一个最小的工作示例吗?此外,您要并行化的calc_R函数似乎非常简单,因此为每个调用生成一个单独的进程可能比实际计算更昂贵。您所说的“工作示例”是什么意思?calc_R函数只是一个例子——实际函数要复杂得多。我已经理解了。使用简单的“哑巴”示例进行编辑。代码出现在
R=p.starmap…
行。