AttributeError: Экземпляр очереди не имеет атрибута _empty - PullRequest
0 голосов
/ 07 марта 2011

Клиент получил эту ошибку с моим программным обеспечением, использующим Python 2.5.5. Как это может быть? _Empty исчез из очереди? Я вообще этого не понимаю. Я не наследовал от очереди, есть просто нормальный экземпляр класса Queue. На моей машине все вроде бы работает нормально, однако на машине заказчика появилась ошибка. Кто-нибудь может дать мне совет, в чем может быть проблема?

Проблема произошла здесь:

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()

Ранее очередь была инициализирована с

self.requests = Queue(self.reqQLen)

И эти методы очереди также используются в модуле: put_nowait, qsize, get. Очередь используется в контексте многопоточности. Может ли это быть причиной?

Мне интересно: сообщение об ошибке говорит мне, что переменная запрашивает распознается как экземпляр очереди, но атрибут _empty отсутствует. Однако это обычный метод в классе Queue.

1 Ответ

5 голосов
/ 07 марта 2011

Я не очень знаком с этим (и я не знаю, какую версию Python вы используете), но, глядя на документацию , я не вижу упоминания атрибута _empty, нотолько метод empty().Поскольку начальное подчеркивание используется для обозначения личных атрибутов, мне кажется, что его существование не стандартизировано, а зависит от реализации, и что вместо этого было бы правильным использование метода empty().

...