Este repositorio contiene una demostración práctica de la diferencia entre ejecución secuencial y ejecución con hilos (threads) en Python, utilizando un ejemplo divertido de tareas de superhéroe.
El threading (multihilo) es una técnica de programación que permite ejecutar múltiples tareas de forma concurrente dentro del mismo proceso. En lugar de esperar que una tarea termine para comenzar la siguiente, los hilos permiten que varias tareas se ejecuten "al mismo tiempo".
El proyecto simula tres tareas heroicas que un superhéroe debe realizar:
- Detener un auto 🚗 - 7 segundos
- Congelar un incendio 🔥 - 13 segundos
- Sostener un balcón 🏢 - 10 segundos
- Las tareas se ejecutan una tras otra
- Tiempo total: ~30 segundos (7 + 13 + 10)
- El superhéroe debe completar una tarea antes de comenzar la siguiente
- Las tareas se ejecutan en paralelo
- Tiempo total: ~13 segundos (tiempo de la tarea más larga)
- El superhéroe puede realizar las tres tareas simultáneamente
theadring.py- Código principal con ambas implementacionesnot_theadring.py- (archivo adicional en el repositorio)README.md- Este archivo de documentación
python theadring.pyYou have stopped a speeding car before it reaches a crowded crosswalk
You have freezed a fire to protect a family inside a house
You have held a collapsing balcony and everyone has escaped safely
------------------------------------------------------------
Execution time in sequence: 30.XX seconds
------------------------------------------------------------
[Tareas ejecutándose simultáneamente con threads]
All chores are complete. You are the best!
------------------------------------------------------------
Execution time using threads: 13.XX seconds
------------------------------------------------------------
- Crea un nuevo hilo de ejecución
targetespecifica la función a ejecutarstart()inicia la ejecución del hilo
- Hace que el programa principal espere a que termine el hilo
- Garantiza que todas las tareas se completen antes de continuar
✅ Mejor rendimiento para tareas I/O intensivas
✅ Mejor experiencia de usuario (no bloquea la interfaz)
✅ Aprovechamiento de recursos cuando hay esperas
- Operaciones de archivo
- Solicitudes de red
- Tareas con esperas (como
time.sleep()) - Interfaces de usuario que no deben bloquearse
Este ejemplo usa time.sleep() para simular tareas que toman tiempo. En aplicaciones reales, esto podría ser lectura de archivos, llamadas a APIs, consultas a bases de datos, etc.
¡Conviértete en un superhéroe de la programación dominando los hilos! 🚀