AttributeError:队列实例没有属性'_empty'

时间:2011-03-07 15:17:49

标签: python queue attributeerror

客户使用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。队列用于多线程的上下文中。这可能是原因吗?

我想知道:错误消息告诉我变量 requests 被识别为队列实例,但属性_empty不存在。但是,这是Queue类中的常规方法。

1 个答案:

答案 0 :(得分:5)

我对此并不是很熟悉(我不知道您使用的是哪个版本的Python),但是查看documentation我没有看到_empty属性,但是只有empty()方法。由于前导下划线用于表示私有属性,因此我认为它的存在不是标准化的,而是依赖于实现的,而使用empty()方法将是正确的解决方案。