0

客户使用 Python 2.5.5 使用我的软件时遇到此错误。怎么可能?_empty 是否已从队列中消失?我完全不明白这一点。我没有从队列继承,只是队列类的一个普通实例。在我的机器上似乎一切正常,但是,在客户的机器上出现了错误。谁能给我一些建议可能是什么问题?

问题发生在这里:

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 类中的普通方法。

4

1 回答 1

5

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

于 2011-03-07T15:21:06.420 回答