queue
Модуль queue
поставляет Queue()
(FIFO или очередь) и LifoQueue()
(LIFO или стек). Обе конструкции потокобезопасны и их можно использовать в многопоточных процессах.
Очереди (FIFO) позволяют добавлять объекты в последовательность в одном конце и удалять в другом с помощью методов put()
и get()
. Стеки (LIFO) добавляют и удаляют с одного конца.
Кроме того, доступен контейнер PriorityQueue()
, позволяющий добавлять/убирать объекты в последовательность основываямь не на очередности добавления, а на характеристиках объекта. В данном случае используется упорядоченная очередь, из которой будет извлкаться наименьший объект.
Для всех типов очередей можно задать предельный размер, при превышении которого очередь заполняться не будет пока из нее не будет удален элемент. Ряд методов позволяет блокировать очередь до ее освобождения.
См. так-эе asyncio.Queue и multiprocessing.Queue