파이썬 multiprocessing 예제

여기서는 Python의 멀티 프로세싱 모듈과 CPU 코어를 최대한 활용하기 위해 서로 독립적으로 실행할 수 있는 여러 프로세스를 제출하는 데 사용할 수 있는 방법을 살펴보겠습니다. Pipe() 함수는 기본적으로 이중(양방향)인 파이프로 연결된 연결 객체 쌍을 반환합니다. 예를 들어 Pool 메서드의 비동기 변형에 대해 설명하기 전에 Pool.apply 및 Pool.map을 사용하는 간단한 예제를 살펴보겠습니다. 여기서는 프로세스 수를 4로 설정하므로 Pool 클래스는 동시에 4개의 프로세스만 실행할 수 있습니다. 이전 자습서에서는 파이썬 CSV 예제에 대해 배웠습니다. 이 자습서에서는 예제와 함께 파이썬 멀티 프로세싱을 배우겠습니다. 다음은 로깅이 켜져 있는 예제 세션입니다: multiprocessing.sharedctypes 모듈은 자식 프로세스에서 상속할 수 있는 공유 메모리에서 ctype 개체를 할당하는 함수를 제공합니다. 여기서는 Parzen 창 기술을 사용하여 확률 밀도 함수에 대한 커널 밀도 추정을 수행하기 위한 함수를 정의합니다. 나는 이 기술의 이론에 대해 자세히 이야기하고 싶지 않다, 우리는 주로 멀티 프로세싱이 성능 향상을 위해 사용될 수있는 방법을보고 관심이 있기 때문에, 그러나 당신은 여기에 Parzen 창 방법에 대한 내 자세한 기사를 읽을 환영합니다. 일반적으로 인수를 사용하여 프로세스를 생성하여 수행할 작업을 알려주는 것이 더 유용합니다. 스레딩과 달리 인수를 다중 처리 프로세스에 전달하려면 피클을 사용하여 인수를 직렬화할 수 있어야 합니다. 이 예제는 각 작업자에게 숫자를 전달하므로 출력이 좀 더 흥미롭습니다.

이 패키지 내의 기능을 사용하려면 자식에서 __main__ 모듈을 가져올 수 있어야 합니다. 프로그래밍 지침에서는 다루지만 여기서는 여기서 지적할 가치가 있습니다. 즉, 풀 예제와 같은 몇 가지 예제는 대화형 인터프리터에서 작동하지 않습니다. 예를 들어 CPU 제조업체가 프로세서에 점점 더 많은 코어를 추가하기 시작하면 병렬 코드를 만드는 것이 성능을 향상시키는 좋은 방법입니다. 파이썬은 병렬 코드를 작성할 수 있도록 멀티 프로세싱 모듈을 도입했습니다. 다중 처리의 파이프는 주로 프로세스 간의 통신에 사용됩니다. 사용법은 간단합니다: 멀티프로세싱에는 스레딩.active_count(), 스레딩.enumerate(), 스레딩.settrace(), 스레딩.setprofile(), 스레딩의 유사체가 포함되어 있지 않습니다. 타이머 또는 스레딩.local. 가장 기본적인 방법은 다중 처리 모듈의 Process 클래스를 사용하는 것입니다. 여기서는 간단한 큐 함수를 사용하여 네 개의 임의문자열을 병렬로 생성합니다.

다중 처리는 일반적인 Queue.Empty 및 Queue.Full 예외를 사용하여 시간 시간을 시그널합니다. 다중 처리 네임스페이스에서는 사용할 수 없으므로 Queue에서 가져와야 합니다.