Junior — Middle
¿Qué métodos están implementados en Python para realizar tareas en paralelo o concurrentemente?
sobes.tech AI
Respuesta de la IA
En Python, se utilizan varios enfoques y bibliotecas para realizar tareas de manera paralela o concurrente:
-
Módulo
threading— para crear hilos (threads). Adecuado para tareas con muchas operaciones de entrada/salida, pero no acelera las tareas CPU-bound debido a GIL. -
Módulo
multiprocessing— para crear procesos. Permite sortear GIL y usar eficientemente varios núcleos de CPU. -
Módulo
asyncio— para programación asíncrona usando corutinas. Bueno para muchas operaciones de entrada/salida. -
Bibliotecas de alto nivel:
concurrent.futures.ThreadPoolExecutoryProcessPoolExecutor— interfaz conveniente para ejecutar tareas en hilos o procesos.
Ejemplo de uso de concurrent.futures:
from concurrent.futures import ThreadPoolExecutor
def tarea(n):
print(f"Tarea {n} en ejecución")
with ThreadPoolExecutor(max_workers=3) as executor:
for i in range(5):
executor.submit(tarea, i)
Por lo tanto, la elección del método depende del tipo de tarea: para tareas CPU-bound — multiprocessing, para I/O-bound — threading o asyncio.