Skip to content

Use deque as Queue (FIFO)

Zero-dependency Python snippets for using collections.deque as a queue (First-In, First-Out) with the standard library.

4 snippets available in this sub-category.


Simple

Enqueue and dequeue with deque

queue deque enqueue dequeue FIFO data-structures

Use deque append() and popleft() for queue operations

from collections import deque

queue = deque()
queue.append(1)  # Enqueue
queue.append(2)
queue.append(3)
print(queue)  # deque([1, 2, 3])

item = queue.popleft()  # Dequeue
print(item)  # 1
print(queue)  # deque([2, 3])

Notes

  • append() adds to the end (rear of queue)
  • popleft() removes from the front (head of queue)

Peek at front and rear

queue peek deque data-structures

Access the front and rear elements without removing

from collections import deque


queue = deque([1, 2, 3])
front = queue[0]
rear = queue[-1]
print(front, rear)  # 1 3

Notes

  • Use queue[0] for front, queue[-1] for rear
  • Raises IndexError if queue is empty

Complex

Queue with maxlen (bounded queue)

queue deque maxlen bounded data-structures

Bounded queue with automatic overflow handling

from collections import deque


queue = deque(maxlen=3)
queue.append(1)
queue.append(2)
queue.append(3)
queue.append(4)  # Oldest item (1) is dropped
print(queue)  # deque([2, 3, 4], maxlen=3)

Notes

  • maxlen discards oldest items when full

Thread-safe queue with queue.Queue

queue thread-safe data-structures

Use queue.Queue for thread-safe FIFO queues

from queue import Queue

q = Queue()
q.put(1)  # Enqueue
q.put(2)
item = q.get()  # Dequeue
print(item)  # 1

Notes

  • queue.Queue is safe for multi-threaded use
  • Use get_nowait() and put_nowait() for non-blocking

🔗 Cross Reference

🏷️ Tags

queue, deque, enqueue, dequeue, peek, maxlen, thread-safe, FIFO, data-structures

📝 Notes

  • deque is fast and flexible for queues and stacks
  • For thread-safe or multi-producer/consumer queues, use queue.Queue