멀티 프로세스 예제

이전 자습서에서는 파이썬 CSV 예제에 대해 배웠습니다. 이 자습서에서는 예제와 함께 파이썬 멀티 프로세싱을 배우겠습니다. 스레딩 예제와 다중 처리 예제간의 한 가지 차이점은 다중 처리 예제에 사용되는 __main___에 대한 추가 보호입니다. 새 프로세스가 시작되는 방식으로 인해 자식 프로세스는 대상 함수를 포함하는 스크립트를 가져올 수 있어야 합니다. __main___에 대한 검사에서 응용 프로그램의 주요 부분을 래핑하면 모듈을 가져올 때 각 자식에서 재귀적으로 실행되지 않습니다. 또 다른 방법은 대상 함수를 별도의 스크립트에서 가져오는 것입니다. 그림 28.1 이 패키지 내의 대칭 다중 프로세스 응용 프로그램 기능의 데이터 흐름 예제에서는 __main__ 모듈을 자식에서 가져올 수 있어야 합니다. 프로그래밍 지침에서는 다루지만 여기서는 여기서 지적할 가치가 있습니다. 즉, 풀 예제와 같은 몇 가지 예제는 대화형 인터프리터에서 작동하지 않습니다.

예: DPDK 릴리스의 예제/simple_mp 폴더에는 큐와 메모리 풀을 사용하여 정보를 공유하는 두 DPDK 프로세스가 어떻게 함께 작동하는지 보여 주는 기본 예제 응용 프로그램이 포함되어 있습니다. 특정 다중 프로세스 응용 프로그램을 빌드해야 하는 경우 최상위 다중 프로세스 디렉터리대신 해당 응용 프로그램의 디렉터리에서만 최종 확인 명령을 실행할 수 있습니다. 경계가 있는 세마포 개체: 스레딩의 가까운 유사체입니다. 경계세마포어. Pipe())에서 반환되는 두 연결 객체는 파이프의 두 끝을 나타냅니다. 각 연결 개체에는 send() 및 recv() 메서드가 있습니다. 두 프로세스(또는 스레드)가 동시에 파이프의 동일한 끝을 읽거나 쓰려고 하면 파이프의 데이터가 손상될 수 있습니다. 물론 동시에 파이프의 다른 끝을 사용하는 프로세스에서 손상의 위험이 없습니다. 한 가지 중요한 점은 args 키워드 인수를 사용해야하는 프로세스를 통해 인수를 전달하려는 경우입니다.

다음 코드는 Process 클래스의 사용을 이해하는 데 도움이 될 것입니다. 다음은 로깅이 켜져 있는 예제 세션입니다: typecode_or_type은 반환된 배열의 요소 유형을 결정합니다: ctype 형식 또는 배열 모듈에서 사용하는 종류의 한 문자 형식코드입니다.