Python многопроцессорная обработка внутри вызываемой функции в scipy.optimize - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь использовать многопроцессорность внутри функции стоимости, вызываемой функцией минимизации scipy.optimize. Внутри функции стоимости у меня есть al oop Я хочу вычислить параллельно.

Упрощенная версия кода выглядит следующим образом:

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, shift_args).

Как может выполняться многопроцессорная обработка?

Любая помощь высоко ценится.

...