Tutorial de estrutura de dados de fila Python
Domine as operações da fila FIFO em Python. Execute e execute nosso exemplo de fila interativa apresentando métodos de enfileiramento e desenfileiramento.
Visão geral
Uma fila é uma estrutura de dados linear que opera segundo o princípio First-In, First-Out (FIFO). Os elementos são adicionados na parte traseira (enfileirar) e removidos na frente (desenfileirar), como uma fila de caixa em uma loja.
As filas são essenciais na ciência da computação para processar tarefas na ordem exata em que chegam. Eles atuam como buffers que separam os processos de produção e consumo.
Python fornece várias maneiras de construir filas: listas básicas, o módulo `collections.deque` para operações rápidas e seguras para threads e o módulo `queue.Queue` projetado especificamente para aplicativos multithread.
Saída de código e execução
Uma fila FIFO interativa construída usando Collections.deque para operações eficientes de remoção frontal.
from collections import deque
class Queue:
def __init__(self):
self.buffer = deque()
def enqueue(self, item):
self.buffer.append(item)
print(f"Enqueued: {item}")
def dequeue(self):
if self.is_empty():
return "Underflow: Queue is empty"
dequeued = self.buffer.popleft()
print(f"Dequeued: {dequeued}")
return dequeued
def is_empty(self):
return len(self.buffer) == 0
def size(self):
return len(self.buffer)
# Test the Queue
q = Queue()
q.enqueue("Customer 1")
q.enqueue("Customer 2")
q.enqueue("Customer 3")
print(f"Queue Size: {q.size()}")
q.dequeue()
q.dequeue()
print(f"Remaining in Queue: {list(q.buffer)}")Enqueued: Customer 1
Enqueued: Customer 2
Enqueued: Customer 3
Queue Size: 3
Dequeued: Customer 1
Dequeued: Customer 2
Remaining in Queue: ['Customer 3']Implementação passo a passo
- Lidando com solicitações assíncronas em estruturas web de servidor
- Filas de agendamento de tarefas em sistemas operacionais
- Agentes de mensagens e buffers de fila (como RabbitMQ ou Redis)
Perguntas frequentes
Por que não usar list.pop(0) para retirar da fila em Python?
Usar `list.pop(0)` é lento porque requer o deslocamento de todos os elementos subsequentes na memória um índice para a esquerda, resultando em desempenho O(n). Em contraste, `deque.popleft()` é executado em tempo constante O(1).
O que é uma fila prioritária?
Uma fila de prioridade é uma variação em que os elementos são atendidos com base em uma prioridade associada, e não na ordem de chegada. Python implementa isso através do módulo `heapq`.
Tópicos Relacionados
Implemente uma pilha LIFO em Python. Execute nosso exemplo de código de pilha interativo para dominar os limites de push, pop, peek e capacidade.
Implementação de lista vinculada individualmente em PythonAprenda como implementar uma lista vinculada individualmente em Python. Explore a alocação dinâmica de memória, operações de nó, inserção, passagem e exclusão.