[PYTHON] 여러 프로세스간에 결과 큐 공유
PYTHON여러 프로세스간에 결과 큐 공유
다중 처리 모듈의 문서는 다중 처리로 시작된 프로세스에 대기열을 전달하는 방법을 보여줍니다. 프로세스. 하지만 apply_async로 시작된 비동기 작업자 프로세스로 큐를 공유하려면 어떻게해야합니까? 역동적 인 합류 나 다른 어떤 것도 필요로하지 않습니다. 노동자들이 (반복적으로) 결과를 다시 기본으로보고 할 수있는 유일한 방법입니다.
import multiprocessing
def worker(name, que):
que.put("%d is done" % name)
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=3)
q = multiprocessing.Queue()
workers = pool.apply_async(worker, (33, q))
이것은 다음과 함께 실패합니다. RuntimeError : 큐 객체는 상속을 통해 프로세스간에 공유되어야합니다. 이것이 의미하는 바를 이해하고 피클 링 / unpickling (및 모든 특수 Windows 제한 사항)이 필요하기보다는 상속하는 조언을 이해합니다. 하지만 작동 방식으로 큐를 전달하는 방법은 무엇입니까? 예를 찾을 수 없으며 다양한 방법으로 실패한 몇 가지 대안을 시도했습니다. 도와주세요?
해결법
-
==============================
1.다중 처리 .Manager를 사용하여 대기열을 관리하고 다른 작업자가 대기열에 액세스 할 수 있도록하십시오.
다중 처리 .Manager를 사용하여 대기열을 관리하고 다른 작업자가 대기열에 액세스 할 수 있도록하십시오.
import multiprocessing def worker(name, que): que.put("%d is done" % name) if __name__ == '__main__': pool = multiprocessing.Pool(processes=3) m = multiprocessing.Manager() q = m.Queue() workers = pool.apply_async(worker, (33, q))
from https://stackoverflow.com/questions/9908781/sharing-a-result-queue-among-several-processes by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 프록시를 사용하여 Selenium Webdriver 실행하기 (0) | 2018.10.07 |
---|---|
[PYTHON] 파이썬 요청 파일 업로드 (0) | 2018.10.07 |
[PYTHON] Python super ()가 TypeError를 발생시킵니다. (0) | 2018.10.07 |
[PYTHON] 사전 및 기본값 (0) | 2018.10.07 |
[PYTHON] 파이썬은 csv를 xlsx로 변환합니다. (0) | 2018.10.07 |