我已经使用 SciPy 进行了并行优化。
def optimize(f):
return opt.fmin_powell(runner, param, args=(f,f), disp=0)
f = ['1','2','3', '4', '5', '6', '7', '8']
p = Pool(processes=8)
async_ret = p.map(optimize,f,chunksize=1)
result = async_ret.get()
p.terminate()
优化完成后,我收到错误消息作为回报:
result = async_ret.get()
AttributeError: 'list' object has no attribute 'get'
当列表结束时,看起来问题出在地图上。任何人都可以指出正在发生的事情以及我如何解决这个问题吗?
问题:优化完成后,我收到错误消息作为回报:
result = async_ret.get()
AttributeError: 'list' object has no attribute 'get'
您正在尝试从list
对象调用.get()
,假设async_ret
是pool.AsyncResult
。
Python » 3.6.1 文档: multiprocessing.pool.AsyncResult:
类 multiprocessing.pool.AsyncResult
由 Pool.apply_async(( 和 Pool.map_async(( 返回的结果的类。
p.map(
不返回pool.AsyncResult
.
做一个print(async_ret)
,你会看到你得到了什么。