Pathos와 병렬 처리하려고하는 작업이 있습니다. 비 병렬 버전을 실행하면 정상적으로 실행됩니다. 그러나 1 프로세스의 pathos 풀을 실행하면 RuntimeError : maximum recursion depth가 초과됩니다. 예를 들어Pathos 처리 풀 재귀 제한
:
import pathos.multiprocessing as mp
pool = mp.ProcessPool(1)
def _worker(fx):
return fx[0](fx[1],fx[2])
이 오류가 발생하는 이유를 디버깅하는 나의 시도에서, 나는 한 개체의 목록을 매핑 시도했습니다. 이 t1.getValue
적용 할 수있는 고가의 기능은 어디
>>> map(_worker, izip([t1.getValue], repeat(a_all), repeat(penalties)))
[-0.34375]
멀티 프로세싱없이 작동합니다. 동일한 두 인수에 적용되는 이러한 expesive 함수의 전체 목록이 있습니다. . 흥미로운 무엇
>>> pool.map(_worker, izip([t1.getValue], repeat(a_all), repeat(penalties)))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/pathos/multiprocessing.py", line 136, in map
return _pool.map(star(f), zip(*args)) # chunksize
File "/usr/local/lib/python2.7/site-packages/multiprocess/pool.py", line 251, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/local/lib/python2.7/site-packages/multiprocess/pool.py", line 567, in get
raise self._value
RuntimeError: maximum recursion depth exceeded
이 getValue
이 순환되지 않는 것입니다 : 이것은 병렬 처리에 들어오는 곳 그러나 다음은 오류가 발생합니다. 스택 제한에 도달했을 때 가끔씩 발생하는 것을 알고 있습니다.
getValue
의 어떤 부분이 오류로 인해 다중 처리가 작동하는지 파악하려면 어떻게해야합니까? 내가이 시점에서 이것을 디버깅하는 방법을 모르기 때문에 나는 막혀있다. 이것은 실제로 프로세스에 데이터를 전달할 때 산세 오류로 인해 발생할 수 있습니까? getValue
은 막후의 큰 구조를 처리합니다.
이 끔찍한 생각하고 증상을 해결하지만 문제 – avigil