2017-03-07 4 views
1

다중 처리 .Manager()와이 객체를 사용하여 공유 객체를 만드는 방법을 알고 있습니다. 특히 작업자가 공유 할 수있는 대기열 question,이 question 및이 question이 있습니다.파이썬 다중 처리 : RuntimeError : "상속을 통해 프로세스간에 큐 객체를 공유해야합니다."

그러나 이러한 링크에는 프로세스간에 공유를 위해 상속을 사용할 수있는 이유가 언급되어 있지 않습니다. 알다시피,이 경우에만 대기열을 복사 할 수 있습니다.

+2

"상속"의 잘못된 의미를 생각하고 있습니까? 그것들은'클래스 하위 (부모)'OOP 상속이 아닌, 이들을 생성하는 프로세스로부터 큐를 상속받는 프로세스에 대해 말하고 있습니다. – user2357112

답변

1

파이썬에서 Queue 구현 판독 보호이 pipe 쓸 다른 일부 semaphores 한 프로세스에서 데이터를 전송하는 시스템 pipe에 의존한다.

pipe은 프로세스에서 열린 파일로 처리되며 OS 제약 조건으로 인해 생성시 하위 프로세스와 만 공유 할 수 있습니다.
semaphores은 또한 적어도 초기 버전의 Python의 경우 UNIX 기반 시스템에서 산 출시에만 공유해야하는 파일로 처리됩니다.

이러한 2 개의 하위 개체는 일반적으로 공유 할 수 없기 때문에 Queue은 피클링되고 시작된 후 하위 프로세스로 보낼 수 없습니다.

그러나 일부 OS 및 최신 버전의 Python에서는 Connection을 공유하고 공유 할 수있는 Semaphore을 만들 수 있습니다. 따라서 이론적으로 프로세스간에 공유 할 수있는 자신의 Queue을 만들 수 있습니다. 그러나 해킹이 많이 발생하고 보안 성이 떨어질 수 있습니다.