URL에서 다운로드 HTML과 같은 작업을 수행하는 함수 목록이 있습니다 (각 함수는 매우 다르므로 URL과 downlaod를 수락 할 단일 함수를 만들 수 없습니다). 나는 작업 속도를 높이기 위해 다중 처리를 사용했다. 아래는 내 코드입니다파이썬 다중 처리 콜백
def runInParallel(list_of_functions):
for fn in list_of_functions:
proc = [Process(target=fn[1]).start() for fn in list_of_functions]
for p in proc:
p.join()
각 기능이 반환하는 결과를 저장하는 방법은 무엇입니까? 각 함수는 데이터베이스에 구문 분석하고 저장해야하는 dict을 반환하며 각 함수에서 이러한 단계를 반복하지 않으므로 fucntions에서 반환 된 결과와 함께 전달 될 수있는 일종의 콜백입니다. 어떻게 할 수 있습니까?
편집 : pool
을 사용하지만 오류가 발생합니다. 나는 list_of_functions
에 대해 다음 한 : 위의 설명에서 언급 한 바와 같이
[('f1', <function f1 at 0x7f34c11c9ed8>), ('f2', <function f2 at 0x7f34c11c9f50>)]
def runInParallel(list_of_functions):
import multiprocessing
pool = multiprocessing.Pool(processes = 3)
x = pool.map(lambda f: f(), list_of_functions)
print x
File "main.py", line 31, in <module>
runInParallel(all_functions)
File "main.py", line 11, in runInParallel
x = pool.map(lambda f: f(), list_of_functions)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 251, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 558, in get
raise self._value
cPickle.PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
[다중 처리에서 반환 값을 얻을 수 있습니까?] (http://stackoverflow.com/questions/8329974/can-i-) 리턴 값 - 멀티 프로세싱 - pr ocess) – DavidW
참조 http://stackoverflow.com/questions/10415028/how-can-i-recover-the-return-value-of-a-function-passed-to-multi 및 http://stackoverflow.com/question/10797998/python을 반환하는 -ex-it-possible-to-multiprocess-a-function – DavidW
@DavidW는 응답을 주셔서 감사합니다. 그러나 어떻게하면 mc에 대해 results = [result_queue.get() in montecarlos]'내 코드에서? – anekix