오일러 프로젝트 # 4에 대한 대답입니다.병렬 처리 할 수 있습니까?
회문수는 같은 방법으로 읽습니다. 2 자리 숫자 두 자리의 곱으로 만들어진 최대 회문은 9009 = 91 99
입니다.
두 자리 3 자리 숫자의 곱으로 만들어진 최대 회 전기를 찾으십시오.
답변 :
906609
코드는 :이 실행할 때
from multiprocessing import Pool
from itertools import product
def sym(lst):
rst=[]
for x,y in lst:
tmp=x*y
if rec(tmp):
rst.append(tmp)
return rst
def rec(num):
num=str(num)
if num == "".join(reversed(num)): return True
else: return False
if __name__ == "__main__":
pool=Pool(processes=8)
lst=product(xrange(100,1000),repeat=2)
rst=pool.map(sym,lst)
#rst=sym(lst)
print max(rst)
:
# TypeError:'int' object is not iterable
하지만 난 그것을 이해할 수 없다 ... 반복자를 나열하지 않습니다 ? 또는 내 코드에 오류가 있습니까?
목록은 반복 가능하며 목록을 전달하지 않는 것은 int임을 나타냅니다. – monkut
전체 추적은 오류의 정확한 위치를 찾아내는 데 도움이되지만 원인은 오류 메시지에 설명되어 있으며 @monkut에 의해 지적되었습니다. – Levon
여기에서 테스트했는데 이상한 오류 일 수 있습니다. 처리가 끝나기 전에 최대 결과를 인쇄하려는 시도와 함께하십시오 ... 반복을 제외하고 try/wrap을 감싸고 조금만 디버깅하려고 시도 할 수 있습니다. – monkut