AttributeError: Queue 实例没有 '_empty' 属性
一个客户在使用我写的软件时遇到了错误,软件是用Python 2.5.5写的。这是怎么回事呢?难道_queue里的_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。这个队列是在多线程的环境下使用的。会不会是这个原因呢?
我在想:错误信息告诉我,变量requests被识别为一个队列实例,但属性_empty却不存在。然而,这在Queue类中是一个正常的方法。
1 个回答
5
我对这个不是很熟悉(而且我也不知道你用的是哪个版本的Python),不过从文档来看,我没有看到提到过一个叫_empty
的属性,只有一个empty()
的方法。因为前面有个下划线通常表示这个属性是私有的,所以我觉得这个属性的存在可能不是标准的,而是根据具体实现来决定的。因此,使用empty()
这个方法可能是更正确的做法。