Tutorial de estructura de datos de cola de Python

Domine las operaciones de cola FIFO en Python. Ejecute y ejecute nuestro ejemplo de cola interactiva que muestra los métodos de poner y quitar la cola.

Pruébelo en el editor

Descripción general

Una cola es una estructura de datos lineal que funciona según el principio de primero en entrar, primero en salir (FIFO). Los elementos se agregan en la parte trasera (poner en cola) y se eliminan del frente (quitar de cola), de manera muy similar a la línea de pago en una tienda.

Las colas son fundamentales en informática para procesar las tareas en el orden exacto en que llegan. Actúan como amortiguadores que desacoplan los procesos de producción y consumo.

Python proporciona múltiples formas de crear colas: listas básicas, el módulo `collections.deque` para operaciones rápidas seguras para subprocesos y el módulo `queue.Queue` diseñado específicamente para aplicaciones multiproceso.

Código y salida de ejecución

Una cola FIFO interactiva creada con collections.deque para operaciones eficientes de eliminación 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)}")
Salida terminal
Enqueued: Customer 1
Enqueued: Customer 2
Enqueued: Customer 3
Queue Size: 3
Dequeued: Customer 1
Dequeued: Customer 2
Remaining in Queue: ['Customer 3']

Implementación paso a paso

  • Manejo de solicitudes asincrónicas en marcos web de servidor
  • Colas de programación de trabajos en sistemas operativos
  • Corredores de mensajes y buffers de cola (como RabbitMQ o Redis)

Preguntas frecuentes

¿Por qué no utilizar list.pop(0) para quitar la cola en Python?

El uso de `list.pop(0)` es lento porque requiere desplazar todos los elementos subsiguientes en la memoria un índice hacia la izquierda, lo que resulta en un rendimiento O(n). Por el contrario, `deque.popleft()` se ejecuta en tiempo constante O(1).

¿Qué es una cola prioritaria?

Una cola de prioridad es una variación en la que los elementos se sirven en función de una prioridad asociada en lugar de un orden de llegada. Python implementa esto a través del módulo `heapq`.

Temas relacionados