Подтвердить что ты не робот

Использование очереди в python

Я пытаюсь запустить следующее в 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

4b9b3361

Ответ 1

Вы делаете

from queue import *

Теперь он импортирует все классы из модуля queue. Измените эту строку на

q = Queue(maxsize=0)

Ответ 2

Это потому, что вы используете: from queue import *

а затем вы пытаетесь использовать:

queue.Queue(maxsize=0) 

удалите часть queue, потому что from queue import * импортирует все атрибуты в текущее пространство имен.

Queue(maxsize=0) 

или используйте import queue вместо from queue import *.

Ответ 3

Если вы импортируете from queue import *, это означает, что все классы и функции импортируют в вас код полностью. Поэтому вы не должны писать имя модуля, просто q = Queue(maxsize=100). Но если вы хотите использовать классы с именем модуля: q = queue.Queue(maxsize=100), вы должны написать другую строку импорта: import queue, это означает, что вы импортируете весь модуль со всеми функциями не только для всех функций, которые в первом случае.

Ответ 4

Вы можете установить комбу с помощью pip install kombu

а затем очередь импорта Так же, как это

из очереди импорта комбу