我正在使用python的pp模块。 我需要做的是并行运行“scipy.optimize”的“fmin”功能。 我像这样导入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()
然后我在job5的模块中得到一个PicklingError。那是“scipy.optimize”我想。
我也试过import scipy.optimize as sth
但是job_server.submit不接受“sth”作为模块。
任何解决方案?
谢谢。
答案 0 :(得分:0)
将from scipy.optimize import fmin
导入行直接放入fitting
函数,然后停止将其传递到submit
。
答案 1 :(得分:0)
您无法轻松地使用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