PicklingError на pp-модуле python

Я использую модуль pp для python. Что мне нужно сделать, так это запустить параллельно функцию "fmin" из scipy.optimize. Я импортирую fmin так:

from scipy.optimize import fmin

Далее я определяю функцию, которая выполняет функцию fmin следующим образом:

def fitting():
v = fmin(e, v0, args=(x,y),maxiter=10000, maxfun=10000)
return v

И для этой параллельной работы я использую:

job5 = job_server.submit(fitting, (e, v0, x, y,), (fitting,), ("scipy.optimize",))
v = job5()

Затем я получаю PicklingError в модуле job5. Это "scipy.optimize", я думаю. Я тоже пробовал import scipy.optimize as sth но job_server.submit не принимает "sth" в качестве модуля. Какие-либо решения?

Спасибо.

2 ответа

Положить from scipy.optimize import fmin линия импорта в fitting функционировать напрямую и прекратить передавать его в submit,

Вы не можете сделать это с pp очень легко. Однако, если вы используете dill и вилка pp это в pathos (т.е. pathos.pp) тогда это работает в большинстве случаев.

Смотрите несколько примеров в mystic пакет оптимизации, который обеспечивает параллельную и распределенную оптимизацию с использованием расширений оптимизаторов scipy.

Например, это работает с обоими pathos.multiprocessing а также pathos.pp: https://github.com/uqfoundation/mystic/blob/master/examples/buckshot_example06.py

Приведенный выше код запускает несколько fmin_powell экземпляры параллельно, что может дать вам псевдоглобальную оптимизацию с самыми высокими скоростями спуска.

Получить код здесь: https://github.com/uqfoundation

Другие вопросы по тегам