Back to questions
Junior — Middle
91
Чем отличаются структуры данных queue и deque из модуля collections в Python?
Answer from AI
sobes.tech AI
В Python из модуля collections:
-
deque(double-ended queue) — это двунаправленная очередь, которая позволяет эффективно добавлять и удалять элементы с обоих концов (слева и справа). Она реализована как связный список и подходит для задач, где нужны операции вставки и удаления с обеих сторон. -
queue.Queue— это потокобезопасная очередь для многопоточного программирования, реализующая принцип FIFO (первым пришёл — первым вышел). Она предназначена для обмена данными между потоками и обеспечивает блокирующие операцииput()иget().
Итого:
deque— универсальная, быстрая структура для двунаправленной очереди, не потокобезопасна по умолчанию.queue.Queue— специализированная потокобезопасная очередь с блокирующими операциями.
Пример использования deque:
from collections import deque
q = deque()
q.append('right') # добавляем справа
q.appendleft('left') # добавляем слева
print(q) # deque(['left', 'right'])
q.pop() # удаляет справа
q.popleft() # удаляет слева
Пример использования queue.Queue:
import queue
q = queue.Queue()
q.put(1)
item = q.get() # блокируется, если очередь пуста