我正在尝试在Eclipse中运行以下命令(使用PyDev)并且我一直收到错误:
q = queue.Queue(maxsize = 0) NameError:未定义全局名称“queue”
我已经检查了文档,看起来应该放置它的方式。我在这里错过了什么吗?这是PyDev的工作原理吗?还是遗漏了代码中的内容?感谢您的帮助。
from queue import *
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
def main():
q = queue.Queue(maxsize=0)
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join() # block until all tasks are done
main()
使用: Eclipse SDK
版本:3.8.1 构建ID:M20120914-1540
和Python 3.3
答案 0 :(得分:21)
你做
from queue import *
这已导入queue
模块中的所有类。将该行更改为
q = Queue(maxsize=0)
答案 1 :(得分:6)
那是因为您正在使用:from queue import *
然后你正在尝试使用:
queue.Queue(maxsize=0)
删除queue
部分,因为from queue import *
将所有属性导入当前命名空间。 :
Queue(maxsize=0)
或使用import queue
代替from queue import *
。
答案 2 :(得分:1)
如果导入from queue import *
,这意味着您的所有类和函数都会完全导入。所以你不能只写q = Queue(maxsize=100)
模块的名称。但是如果你想使用名称为module q = queue.Queue(maxsize=100)
的类,你就会编写另一个导入字符串:import queue
,这意味着你导入所有函数的所有模块,而不仅仅是在第一种情况下的所有函数。 / p>
答案 3 :(得分:0)
确保您的代码不在queue.py
下,并将其重命名为其他名称。
如果您的文件名为queue.py,它将尝试在同一文件中搜索。
答案 4 :(得分:-5)
你可以安装kombu pip install kombu
然后导入队列就像这样
来自kombu import Queue