这是一个运行良好的简单代码。即使函数 minimize 包装了 scipy.optimize.minimize 它也不会抱怨酸洗
import numpy as np
from scipy import optimize
from multiprocessing import Pool
def square(x):
return np.sum(x**2+ 2*x)
def minimize(args):
f,x = args
res = optimize.minimize(f, x, method = 'L-BFGS-B')
return res.x
x = np.random.rand(8,10)
args = [(square,x[i]) for i in range(8)]
p = Pool(8)
p.map(minimize,args)
但是,如果尝试以下操作,则会失败并出现酸洗错误
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
def run():
def square(x):
return np.sum(x**2+ 2*x)
def minimize(args):
f,x = args
res = optimize.minimize(f, x, method = 'L-BFGS-B')
return res.x
x = np.random.rand(8,10)
args = [(square,x[i]) for i in range(8)]
p = Pool(8)
p.map(minimize,args)
run()
我想制作一个模块来与许多初始猜测并行使用 scipy minimise。但是,如示例所示,当我将其设为模块时,它失败了。