Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scipy.optimize中可调用函数内的Python多处理_Python_Scipy_Python Multiprocessing_Scipy Optimize Minimize - Fatal编程技术网

scipy.optimize中可调用函数内的Python多处理

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):

我试图在一个由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):
        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…
行。