python的pp模块上的PicklingError

时间:2012-12-10 18:57:47

标签: python module pickle parallel-python

我正在使用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”作为模块。 任何解决方案?

谢谢。

2 个答案:

答案 0 :(得分:0)

from scipy.optimize import fmin导入行直接放入fitting函数,然后停止将其传递到submit

答案 1 :(得分:0)

您无法轻松地使用pp执行此操作。但是,如果您使用dillpp中的pathos分叉(即pathos.pp),那么它在大多数情况下都有效。

参见mystic优化包中的几个示例,它使用scipy优化器的扩展提供并行和分布式优化。

例如,这适用于pathos.multiprocessingpathos.pphttps://github.com/uqfoundation/mystic/blob/master/examples/buckshot_example06.py

上面的代码并行启动了几个fmin_powell实例,可以为您提供最速下降速度的伪全局优化。

在此处获取代码:https://github.com/uqfoundation