На этом шаге мы рассмотрим особенности использования этого класса для организации очереди.
Данная реализация очереди в стандартной библиотеке Python синхронизирована и обеспечивает семантику блокирования с целью поддержки многочисленных параллельных производителей и потребителей.
См. документацию Python "queue.Queue": https://docs.python.org/3.6/library/queue.html#module-queue.
Модуль queue содержит несколько других классов, которые реализуют очереди с мультипроизводителями/мультипотребителями, которые широко используются в параллельных вычислениях.
В зависимости от вашего варианта использования семантика блокирования может оказаться полезной, а может накладывать ненужные издержки. В этом случае в качестве очереди общего назначения лучше всего использовать двустороннюю очередь collections.deque.
>>> from queue import Queue >>> q = Queue() >>> s.put('есть') >>> s.put('спать') >>> s.put('программировать') >>> q <queue.Queue object at 0x0000019E0F536520> >>> q.get() 'есть' >>> q.get() 'спать' >>> q.get() 'программировать' >>> q.get_nowait() Traceback (most recent call last): . . . . _queue.Empty >>> q.get() # Блокирует / ожидает бесконечно...
На следующем шаге мы рассмотрим класс multiprocessing.Queue.