queue
Синхронизированный класс очереди
Исходный код: Lib/queue.py
Модуль queue реализует очереди с несколькими производителями и потребителями. Это особенно полезно в многопоточном программировании, когда необходимо безопасно обмениваться информацией между несколькими потоками. Класс Queue в этом модуле реализует всю необходимую семантику блокировки.
В модуле реализованы три типа очередей, которые различаются только порядком получения записей. В очереди FIFO первые добавленные задачи извлекаются первыми. В очереди LIFO последняя добавленная запись извлекается первой (работает как стек). В очереди с приоритетом записи хранятся отсортированными (с использованием модуля heapq), и сначала извлекается запись с наименьшим значением.
Внутри эти три типа очередей используют блокировки для временной блокировки конкурирующих потоков; однако они не предназначены для обработки повторного входа в потоке.
Кроме того, модуль реализует «простой» тип очереди FIFO, SimpleQueue, конкретная реализация которого обеспечивает дополнительные гарантии в обмен на меньшую функциональность.
Модуль queue определяет следующие классы и исключения:
queue.Queue class - конструктор очереди FIFO
queue.LifoQueue class
queue.PriorityQueue class
queue.SimpleQueue class
queue.Empty exception - исключение в случае пустого объекта Queue
queue.Full exception
Объекты Queue
Queue объекты (Queue, LifoQueue или PriorityQueue) предоставляют общедоступные методы, описанные ниже.
Queue.qsize ()
Queue.empty ()
Queue.full ()
Queue.put () - помещает заданный объект в очередь
Queue.put_nowait ()
Queue.get () - извлекает объект из очереди
Queue.get_nowait ()
Предлагаются два метода для поддержки отслеживания того, были ли задачи, поставленные в очередь, полностью обработаны потоками-потребителями демона.
Queue.task_done ()
Queue.join ()
Объекты SimpleQueue
SimpleQueue объекты предоставляют общедоступные методы, описанные ниже.
SimpleQueue.qsize ()
SimpleQueue.empty ()
SimpleQueue.put ()
SimpleQueue.put_nowait ()
SimpleQueue.get ()
SimpleQueue.get_nowait ()
Смотрите также:
Класс multiprocessing.Queue - класс очереди для использования в контексте запуска множества процессов (а не многопоточности).
collections.deque - это альтернативная реализация неограниченных очередей с быстрыми атомарными операциями append () и popleft (), которые не требуют блокировки, а также поддерживают индексацию.
Last updated