¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Colas: cada parte a su ritmo

Después de esta lección: Puedo explicar por qué una cola deja que dos partes trabajen cada una a su ritmo.

Lección de 45 minSin comandos

Las dos de la tarde en una paquetería

Una empresa de paquetería de Sevilla pide a cada repartidor una foto de cada entrega. Un servicio reduce la foto y la guarda. Procesa 30 fotos por minuto.

A las dos de la tarde llegan 120 fotos por minuto. Si la app espera a que se guarde cada foto, el repartidor se queda parado en la puerta mirando el móvil.

Al final de esta lección

Nota

Puedo explicar por qué una cola deja que dos partes trabajen cada una a su ritmo.

Palabras clave

PalabraQué significaEjemplo
Colalista de espera de trabajos
Mensajeun trabajo que hay que hacerfoto entrega 5501
Productorparte que deja mensajes en la cola
Consumidorparte que saca mensajes y hace el trabajo
Pendientesmensajes que aún esperan
Trabajadoruna copia del consumidor en marcha

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una cola está entre dos partes

Una cola es una lista de espera de trabajos. La app del repartidor es el productor: deja un mensaje en la cola y sigue con su ruta. Un mensaje dice, por ejemplo, "procesa la foto de la entrega 5501".

El servicio de fotos es el consumidor. Saca el mensaje más antiguo, hace el trabajo y saca el siguiente. Ninguna de las dos partes espera a la otra.

Prueba: una cola en Python

Código: python
# Una lista usada como cola: se añade al final y se saca del principio
cola = []

# La app del repartidor deja tres fotos y sigue con su ruta
cola.append("foto entrega 5501")
cola.append("foto entrega 5502")
cola.append("foto entrega 5503")
print("Pendientes:", len(cola))

# El servicio de fotos coge la más antigua
foto = cola.pop(0)
print("Procesando", foto)
print("Pendientes:", len(cola))

# Añade la foto de la entrega 5504 y procesa dos fotos más.
# ¿Qué foto queda en la cola al final?

Los pendientes suben y luego bajan

Cada parte trabaja a su velocidad. Si llegan más mensajes de los que el consumidor procesa, los pendientes crecen. Cuando pasa la hora punta, el consumidor se pone al día y la cola baja.

Mientras esperan, los mensajes no se pierden. La foto aparece en el sistema unos minutos más tarde, y el repartidor nunca se ha quedado parado.

Ejemplo: la hora punta minuto a minuto

MinutoFotos que lleganFotos procesadasPendientes al final
14:001203090
14:0112030180
14:022030170
14:03030140

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que una cola hace el trabajo más rápido. No es así: el servicio sigue procesando 30 fotos por minuto. La cola evita que una parte espere a la otra y absorbe los picos. Si los pendientes crecen todos los días y nunca bajan, hacen falta más trabajadores.

Más trabajadores vacían antes la cola

Puedes poner en marcha varias copias del consumidor, llamadas trabajadores. Cada una saca un mensaje distinto. Dos trabajadores de 30 fotos por minuto procesan 60 entre los dos.

La cola también ayuda cuando algo falla. Si el servicio de fotos se cae diez minutos, los mensajes esperan. Al volver, empieza por el más antiguo y no se pierde ninguna entrega.

Ejemplo: vaciar 600 fotos pendientes

TrabajadoresFotos por minutoMinutos para vaciar
13020
26010
41205
51504

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.