Multiprocessing.Process 인스턴스의 함수에서 반환 값 추출
multiprocessing.Process에 전달된 함수에서 반환 값을 검색하는 기능은 다음과 같습니다. 특히 비동기 작업 실행이 필요할 때 유용한 기능입니다. 불행하게도 값은 Process 개체에서 즉시 액세스할 수 없으므로 대체 접근 방식이 필요합니다.
값 저장 이해
기존 Python 함수와 달리 다중 처리에 전달되는 함수입니다.Process 반환 값 속성이 없습니다. 대신, 값은 별도의 위치, 특히 공유 메모리 개체에 저장됩니다. 이는 멀티프로세싱을 사용하여 생성된 프로세스가 별도의 메모리 공간에서 실행되어 메인 프로세스의 변수에 직접 접근하는 것을 방지하기 때문입니다.
공유 변수를 사용하여 통신
액세스하려면 반환 값을 얻으려면 프로세스 간 통신 형식을 설정해야 합니다. 효과적인 방법 중 하나는 공유 변수를 활용하는 것입니다. 이는 여러 프로세스가 동시에 데이터를 공유하고 액세스할 수 있도록 하는 개체입니다. 우리의 경우 multiprocessing.Manager()를 사용하여 관리자 개체와 공유 사전을 만듭니다. 사전은 공유 변수 역할을 합니다.
반환 값 액세스
작업자 함수 내에서 공유 사전을 원하는 반환 값으로 채웁니다. 모든 작업이 완료될 때까지 기다린 후 기본 프로세스는 공유 사전에서 이러한 값에 액세스하고 검색할 수 있습니다. 이 전략을 사용함으로써 다중 처리 접근 방식을 손상시키지 않으면서 반환 값을 효과적으로 추출할 수 있습니다.
구현 예
다음 예는 반환을 검색하기 위한 공유 변수의 구현을 보여줍니다. 값:
import multiprocessing def worker(procnum, return_dict): """worker function""" print(str(procnum) + " represent!") return_dict[procnum] = procnum if __name__ == "__main__": manager = multiprocessing.Manager() return_dict = manager.dict() jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i, return_dict)) jobs.append(p) p.start() for proc in jobs: proc.join() print(return_dict.values())
출력:
0 represent! 1 represent! 3 represent! 2 represent! 4 represent! [0, 1, 3, 2, 4]
이 접근 방식을 사용하면 작업자 함수의 반환 값을 검색하고 프로세스 간 원활한 통신을 보여줄 수 있습니다. 다중 처리 프레임워크.
위 내용은 Python의 multiprocessing.Process 인스턴스에서 반환 값을 어떻게 검색할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!