AttributeError: Queue 实例没有 '_empty' 属性

0 投票
1 回答
4978 浏览
提问于 2025-04-16 13:10

一个客户在使用我写的软件时遇到了错误,软件是用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()这个方法可能是更正确的做法。

撰写回答