Ответ 1
Вы делаете
from queue import *
Теперь он импортирует все классы из модуля queue
. Измените эту строку на
q = Queue(maxsize=0)
Я пытаюсь запустить следующее в 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 Идентификатор сборки: M20120914-1540
и Python 3.3
Вы делаете
from queue import *
Теперь он импортирует все классы из модуля queue
. Измените эту строку на
q = Queue(maxsize=0)
Это потому, что вы используете: from queue import *
а затем вы пытаетесь использовать:
queue.Queue(maxsize=0)
удалите часть queue
, потому что from queue import *
импортирует все атрибуты в текущее пространство имен.
Queue(maxsize=0)
или используйте import queue
вместо from queue import *
.
Если вы импортируете from queue import *
, это означает, что все классы и функции импортируют в вас код полностью. Поэтому вы не должны писать имя модуля, просто q = Queue(maxsize=100)
. Но если вы хотите использовать классы с именем модуля: q = queue.Queue(maxsize=100)
, вы должны написать другую строку импорта: import queue
, это означает, что вы импортируете весь модуль со всеми функциями не только для всех функций, которые в первом случае.
Вы можете установить комбу с помощью pip install kombu
а затем очередь импорта Так же, как это
из очереди импорта комбу