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