客户使用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类中的常规方法。
答案 0 :(得分:5)
我对此并不是很熟悉(我不知道您使用的是哪个版本的Python),但是查看documentation我没有看到_empty
属性,但是只有empty()
方法。由于前导下划线用于表示私有属性,因此我认为它的存在不是标准化的,而是依赖于实现的,而使用empty()
方法将是正确的解决方案。