다중 처리에서는 상위 프로세스와 하위 프로세스 간에 대기열을 공유하는 것이 통신 및 결과 검색에 필수적입니다. 그러나 비동기 작업자 프로세스를 시작하기 위해 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의 비동기 특성을 유지하면서 효율적이고 안정적인 결과 통신이 가능합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3