Python ofrece una serie de módulos y bibliotecas que te permiten trabajar con concurrencia y multithreading para ejecutar tareas en paralelo. En este tutorial, aprenderás a utilizar hilos para lograr concurrencia en Python.
Hilos en Python
Los hilos son una forma de lograr concurrencia en Python. Puedes utilizar el módulo `threading` para crear y gestionar hilos. Los hilos son útiles cuando deseas ejecutar varias tareas en paralelo sin tener que crear procesos separados.
Crear un Hilo
Para crear un hilo, importa el módulo `threading` y define una función que represente la tarea que deseas ejecutar en paralelo. Luego, crea una instancia de la clase `Thread` y proporciona la función como argumento.
import threading
def mi_tarea():
for i in range(5):
print(f"Hilo: {i}")
# Crear un hilo
hilo = threading.Thread(target=mi_tarea)
# Iniciar el hilo
hilo.start()
# Esperar a que el hilo termine
hilo.join()
print("Hilo principal")
Múltiples Hilos
Puedes crear y ejecutar múltiples hilos en paralelo. Cada hilo ejecutará la función definida en su propio contexto.
import threading
def mi_tarea():
for i in range(5):
print(f"Hilo: {i}")
# Crear múltiples hilos
hilos = []
for _ in range(3):
hilo = threading.Thread(target=mi_tarea)
hilos.append(hilo)
# Iniciar los hilos
for hilo in hilos:
hilo.start()
# Esperar a que todos los hilos terminen
for hilo in hilos:
hilo.join()
print("Hilo principal")
Concurrencia vs. Paralelismo
Es importante destacar que la concurrencia no siempre implica paralelismo. Los hilos en Python pueden lograr concurrencia al permitir que múltiples tareas se ejecuten de manera intercalada, pero debido al GIL (Global Interpreter Lock), solo un hilo se ejecuta en paralelo en una CPU. Para lograr paralelismo real en Python, puedes considerar el uso de procesos en lugar de hilos.
Conclusiones
Python ofrece una manera sencilla de trabajar con hilos para lograr concurrencia en tus programas. Esto es útil cuando deseas realizar múltiples tareas al mismo tiempo, como procesar solicitudes en un servidor web o realizar cálculos intensivos en paralelo. Sin embargo, ten en cuenta que debido al GIL, Python puede no ser la mejor opción para aplicaciones que requieran paralelismo real en múltiples núcleos de CPU. Para lograr paralelismo, considera el uso de procesos en lugar de hilos.