2011-03-07 9 views
0

고객이 내 소프트웨어에 Python 2.5.5를 사용하여이 오류가 발생했습니다. 어떻게 그럴 수 있죠? _empty가 대기열에서 사라졌습니까? 나는 이것을 전혀 이해하지 못한다. 큐에서 상속받지 못했습니다. 큐 클래스의 일반적인 인스턴스가 있습니다. 내 컴퓨터에서 모두 잘 작동하는 것 같지만 고객의 컴퓨터에서 오류가 발생했습니다. 아무도 내게 문제가 될 수있는 조언을 줄 수 있습니까?AttributeError : 대기열 인스턴스에 '_empty'속성이 없습니다.

문제는 여기서 발생했습니다 : put_nowait, qsize 얻을 : 큐가

self.requests = Queue(self.reqQLen) 

그리고이 큐의 방법은 또한 모듈에 사용되는로 초기화

import Queue 

self.requests.mutex.acquire() 
allCount = self.requests._qsize() 
while not self.requests._empty(): 
    try: 
     (sock, addr, _) = self.requests._get() 
     # ... do some things 
self.requests.mutex.release() 

전에. 대기열은 멀티 스레딩과 관련하여 사용됩니다. 이것이 원인 일 수 있습니까?

나는 변수 요청이 대기열 인스턴스로 인식되지만 _empty 속성이 없다는 오류 메시지를 표시합니다. 그러나 이것은 Queue 클래스의 일반적인 메소드입니다.

+0

귀하와 귀하의 고객은 어떤 Python 버전을 사용하고 있습니까? – nmichaels

+0

두 버전 2.5.5. – robsch

답변

5

나는이 잘 알고 아니에요 (그리고 난 당신이 사용하는 파이썬의 버전을 모른다) 그러나 내가 _empty 속성에 대한 언급하지만, 단지 empty() 방법을 볼 수없는 documentation를 찾고 있습니다. 앞의 밑줄은 개인 속성을 나타 내기 위해 사용 되었기 때문에 그 존재는 표준화되지 않았지만 구현에 따라 다르며 대신 empty() 메소드를 사용하는 것이 올바른 해결책이 될 것 같습니다.

+0

버전 2.5.5가 사용됩니다. 개인적인 방법을 사용해서는 안된다고 생각합니다. – robsch

+5

@ 로버트 : 밑줄 치기 *가 소리 쳐요 * "당신이 이것을 사용하면 바뀌거나 사라집니다. 당신 잘못입니다." 사적인 물건은 바깥 세상의 아무도 그것을 (사용하도록) 알아야하기 때문에 사적인 것입니다. – delnan

+0

그래서 뭔가 Queue 인스턴스의 메서드를 제거 할 것이라고 기대해야합니까? 또는 오류가 뭔가가 메서드를 제거했다는 direkt 증거라고 할 수 있습니까? 큐 구현은 너무 순진 해 보입니다. – robsch

관련 문제