표준 대기열을 사용하여 프로세스에 샘플을 보내면 모든 것이 정상적으로 작동합니다. 그러나, 내 요구가 간단하기 때문에 SimpleQueue를 사용하려고했는데 어떤 이유로 '빈'메서드가 작동하지 않습니다. 여기에 세부 사항입니다 :Python 3.6 : "AttributeError : 'SimpleQueue'객체에 '_poll'속성이 없습니다.
오류 (sample_queue이 대기열 때, sample_queue이 SimpleQueue 때 모든 것이, 작업, 일 휴식) 소비자 과정에서 온다 :
def frame_update(i):
while not self.sample_queue.empty():
sample = self.sample_queue.get()
for line in lines:
sample_queue.empty()를 실행하는 동안 - SimpleQueue.() 빈 창 (queues.py)에 파이썬 3.6에서 우리가 얻을 :
: self._poll은()에 의해 초기화에 설정되어def empty(self):
return not self._poll()
큰
c1 = PipeConnection(h1, writable=duplex)
c2 = PipeConnection(h2, readable=duplex)
좋아 ... :
def __init__(self, *, ctx):
self._reader, self._writer = connection.Pipe(duplex=False)
self._rlock = ctx.Lock()
self._poll = self._reader.poll
if sys.platform == 'win32':
self._wlock = None
else:
self._wlock = ctx.Lock()
그래서 나는 connection.Pipe (connection.py)에서 설정 한 self._reader을 따릅니다.
1)하지 초기화 SimpleQueue의 자기를 할당해야합니다 - 질문 그래서 몇
def _poll(self, timeout):
if (self._got_empty_message or
_winapi.PeekNamedPipe(self._handle)[0] != 0):
return True
return bool(wait([self], timeout))
좋아 다음 _reader는 PipeConnection 및 파이프 연결 될 것입니다 것은이 방법이 있습니다. self._reader.poll 대신 self._reader._poll에 투표 하시겠습니까? 아니면 상속 계층 구조에서 뭔가를 놓치고 있습니까? 내가 부족 PipeConnection의 _poll의 결합은 다른 있습니까 - # 1이 작동해서는 안
2) PipeConnection의 _poll 루틴은
는 *)..., 시간 초과 매개 변수를?
내가 누락 된 항목이 있습니까? Python3.6, Windows, PyCharm에서 디버깅을 사용하고 있으며 모든 경로를 따르며 표준 다중 처리 경로에 있습니다. 나는 어떤 도움이나 조언을 주셔서 감사합니다. 감사!
편집 : 추가 검토 후 PipeConnection은 실제로 'poll'메소드가있는 _ConnectionBase의 하위 클래스이며 기본 시간 초과 매개 변수로 바인딩되어 있음을 알 수 있습니다. SimpleQueue가 초기화 될 때와
self._poll = self._reader.poll
이 왜 _ConnectionBase에서 그것을 잡기 위해 클래스 계층 구조를 가지 않는 설정 :
그래서 질문은?