2017-04-08 81 views
0

我已經使用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' 

它看起來的問題是與地圖時該列表已經結束。任何人都可以指出發生了什麼事情,我該如何解決這個問題?

回答

1

問題:當優化完成後,我收到錯誤消息的回報:

result = async_ret.get() 
AttributeError: 'list' object has no attribute 'get' 

您正在試圖調用.get()list對象假設async_retpool.AsyncResult

的Python»3.6.1文檔:multiprocessing.pool.AsyncResult
類multiprocessing.pool.AsyncResult
類由Pool.apply_async()和Pool.map_async()返回的結果的。

p.map(不返回pool.AsyncResult
做一個print(async_ret),你會看到你得到什麼。