"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > multiprocessing.Manager를 사용하여 여러 프로세스 간에 결과 대기열을 공유하는 방법은 무엇입니까?

multiprocessing.Manager를 사용하여 여러 프로세스 간에 결과 대기열을 공유하는 방법은 무엇입니까?

2024-11-08에 게시됨
검색:210

How to Share a Result Queue Between Multiple Processes Using multiprocessing.Manager?

multiprocessing.Manager를 사용하여 여러 프로세스 간에 결과 대기열 공유

다중 처리에서는 상위 프로세스와 하위 프로세스 간에 대기열을 공유하는 것이 통신 및 결과 검색에 필수적입니다. 그러나 비동기 작업자 프로세스를 시작하기 위해 apply_async를 사용하면 대기열 공유에 문제가 발생합니다.

"큐 개체는 상속을 통해 프로세스 간에만 공유되어야 합니다." 오류를 극복하기 위해 다중 처리 관리자를 활용할 수 있습니다. 이 관리자 클래스를 사용하면 대기열을 포함한 공유 리소스를 생성하고 관리할 수 있습니다.

대기열 생성을 multiprocessing.Manager() 컨텍스트 내에 포함하면 모든 작업자가 액세스할 수 있습니다. 다음은 코드를 수정하는 방법입니다:

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    m = multiprocessing.Manager()
    q = m.Queue()
    workers = pool.apply_async(worker, (33, q))

이제 각 작업자는 공유 q 개체와 상호 작용하고 결과를 기본 프로세스에 다시 보고할 수 있습니다. 이 접근 방식을 사용하면 apply_async의 비동기 특성을 유지하면서 효율적이고 안정적인 결과 통신이 가능합니다.

릴리스 선언문 이 글은 1729334537에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3