> For the complete documentation index, see [llms.txt](https://treasuremaster.gitbook.io/python-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/queue.md).

# queue

### Синхронизированный класс очереди

Исходный код:  [Lib/queue.py](https://github.com/python/cpython/tree/3.8/Lib/queue.py)

Модуль **queue** реализует очереди с несколькими производителями и потребителями. Это особенно полезно в многопоточном программировании, когда необходимо безопасно обмениваться информацией между несколькими потоками. Класс Queue в этом модуле реализует всю необходимую семантику блокировки.

В модуле реализованы три типа очередей, которые различаются только порядком получения записей. В очереди FIFO первые добавленные задачи извлекаются первыми. В очереди LIFO последняя добавленная запись извлекается первой (работает как стек). В очереди с приоритетом записи хранятся отсортированными (с использованием модуля [heapq](/python-docs/moduli-standartnoi-biblioteki-1/specialnye-tipy-dannykh/heapq.md)), и сначала извлекается запись с наименьшим значением.

Внутри эти три типа очередей используют блокировки для временной блокировки конкурирующих потоков; однако они не предназначены для обработки повторного входа в потоке.

Кроме того, модуль реализует «простой» тип очереди FIFO, SimpleQueue, конкретная реализация которого обеспечивает дополнительные гарантии в обмен на меньшую функциональность.

Модуль **queue** определяет следующие классы и исключения:

* [queue.Queue](/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/queue/queue.queue.md) class - конструктор очереди FIFO
* queue.LifoQueue class
* queue.PriorityQueue class
* queue.SimpleQueue class
* [queue.Empty](/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/queue/queue.empty.md) exception - исключение в случае пустого объекта Queue
* queue.Full exception

### Объекты Queue

Queue объекты (Queue, LifoQueue или PriorityQueue) предоставляют общедоступные методы, описанные ниже.

* Queue.qsize ()
* Queue.empty ()
* Queue.full ()
* [Queue.put ()](/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/queue/queue.put.md) - помещает заданный объект в очередь
* Queue.put\_nowait ()
* [Queue.get ()](/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/queue/queue.get.md) - извлекает объект из очереди
* Queue.get\_nowait ()

Предлагаются два метода для поддержки отслеживания того, были ли задачи, поставленные в очередь, полностью обработаны потоками-потребителями демона.

* Queue.task\_done ()
* Queue.join ()

### Объекты SimpleQueue

SimpleQueue объекты предоставляют общедоступные методы, описанные ниже.

* SimpleQueue.qsize ()
* SimpleQueue.empty ()
* SimpleQueue.put ()
* SimpleQueue.put\_nowait ()
* SimpleQueue.get ()
* SimpleQueue.get\_nowait ()

{% hint style="warning" %}
Смотрите также:

Класс multiprocessing.Queue - класс очереди для использования в контексте запуска множества процессов (а не многопоточности).

collections.deque - это альтернативная реализация неограниченных очередей с быстрыми атомарными операциями append () и popleft (), которые не требуют блокировки, а также поддерживают индексацию.
{% endhint %}
