Сообщить об ошибке.

Класс SimpleQueue() модуля queue в Python

Очередь FIFO без отслеживания задач

Синтаксис:

import queue

q = queue.SimpleQueue()

Параметры:

  • нет.

Возвращаемое значение:

Описание:

Класс SimpleQueue() модуля queue представляет собой конструктор для простой неограниченной очереди FIFO.

В простых очередях FIFO отсутствует расширенная функциональность, такая как отслеживание задач.

Методы объекта SimpleQueue:


SimpleQueue.qsize():

Метод SimpleQueue.qsize() возвращает примерный размер очереди.

Обратите внимание, что SimpleQueue.qsize() > 0 не гарантирует, что последующий метод SimpleQueue.get() не будет блокироваться.

SimpleQueue.empty():

Метод SimpleQueue.empty() возвращает True, если очередь пуста, иначе False.

Если SimpleQueue.empty() возвращает False, это не гарантирует, что последующий вызов метода SimpleQueue.get() не будет блокирован.

SimpleQueue.put(item, block=True, timeout=None):

Метод SimpleQueue.put() размещает элемент item в очереди.

Метод никогда не блокируется и всегда завершается успешно за исключением потенциальных ошибок низкого уровня, таких как сбой при выделении памяти. Необязательные аргументы block и timeout игнорируются и предоставляются только для совместимости с объектами потокобезопасных очередей Queue.put().

Детали реализации CPython: этот метод имеет реализацию C, которая является реентерабельной. То есть вызов SimpleQueue.put() или SimpleQueue.get() может быть прерван другим вызовом SimpleQueue.put() в том же потоке без блокировки или повреждения внутреннего состояния в очереди. Это делает его подходящим для использования в деструкторах, таких как методы __del__ или в слабых ссылках модуля weakref.

SimpleQueue.put_nowait(item):

Метод SimpleQueue.put_nowait() эквивалентен SimpleQueue.put(item) и предоставляется для совместимости с Queue.put_nowait().

SimpleQueue.get(block=True, timeout=None):

Метод SimpleQueue.get() удаляет и возвращает элемент из очереди.

Если необязательный аргумент block=True, а время ожидания timeout=None (по умолчанию), то при необходимости метод блокируется, пока элемент не станет доступен.

Если тайм-аут timeout является положительным числом, то он блокируется не более timeout секунд и вызывает исключение queue.Empty, если в течение этого времени не было доступно ни одного элемента. В противном случае (block=False) возвратит элемент очереди, если он сразу доступен, или вызовет исключение queue.Empty (в этом случае timeout игнорируется).

SimpleQueue.get_nowait():

Метод SimpleQueue.get_nowait() эквивалентен вызову SimpleQueue.get(False).


Примеры использования queue.SimpleQueue():

>>> import queue
>>> q = queue.SimpleQueue()
>>> [q.put(i) for i in range(5, 11)]

>>> q.get()
# 5
>>> q.put(1)
>>> q.get()
# 6

# размер оставшейся очереди
>>> q.qsize()
# 5

>>> while not q.empty():
...     print(q.get(), end=' ') 

# 7 8 9 10 1