2013-02-25 2 views

답변

2

Queue 클래스는 단방향 multiprocessing.Pipe()을 사용하여 통신합니다.

당신은 연결의 (개인) ._reader._writer 속성을 통해 그 파이프의 한쪽 끝을 얻을 수 있고, (POSIX에 적어도), 이들은 .fileno() 방법이 있습니다

>>> import multiprocessing 
>>> queue = multiprocessing.Queue() 
>>> queue._reader.fileno() 
3 
>>> queue._writer.fileno() 
4 

이 날은 '개인'을 강조하자를 거기에 별명이있다. ._reader._writer 속성은 구현 세부 정보이므로 게시 된 API를 위반하지 않고 이후 버전을 변경할 수 있습니다. 자신의 책임하에 사용하십시오.

+1

['fileno()'] (http://docs.python.org/2/library/multiprocessing.html#multiprocessing.Connection.fileno) 메소드는 항상 존재하지만 POSIX가 아닌 OS에서는 리턴 할 수 있습니다 파일 기술자 대신에 프로세스 핸들. 그런데'_reader'와'_writer '의 사용법은 구현 세부 사항이라는 점을 더 강조 할 것이고 앞으로는 작동 할 것이라는 보장은 없습니다. – Bakuriu

+1

@Bakuriu : 그게 내가 '(개인)'별명으로 의미했던 것입니다. 더 강조하겠습니다. Win32.ConnectNamedPipe()가 사용되었고, 나는이 호출에 익숙하지 않다는 것을 알기 때문에 Windows가 단방향 파이프에 대해서'.fileno()'메소드를 가지고 있다는 확인을 보니 다행이다. –

+0

대단히 고마워,이게 왜이 물건에 대한 파이썬 웹 사이트에 문서화되어 있지 않은지 궁금해서 프로그래밍에 대한 강한 이해를 가지고 파이썬 코드를 써서 내가 필요한 대부분의 일을 할 수 있지만 문서화되지 않은 것들을 할 수있다. 나는 결코 그것을 발견 할 수 없다. – WojonsTech

관련 문제