2017-04-08 4 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

질문 다음 최적화가 완료되면, 나는 답례로 오류 메시지가 점점 오전 : 당신은 async_ret을 가정 할 list 개체에서 .get()를 호출하려고

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

pool.AsyncResult이다.

파이썬 3.6.1 문서»: multiprocessing.pool.AsyncResult :
클래스 multiprocessing.pool.AsyncResult
Pool.apply_async()와 Pool.map_async()에 의해 반환 된 결과의 클래스입니다.

p.map(pool.AsyncResult을 반환하지 않습니다.
print(async_ret)을 수행하면 얻은 결과가 표시됩니다.