Sobes.tech
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()  # блокируется, если очередь пуста