Sobes.tech
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:

  1. 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.

  2. Módulo multiprocessing — para crear procesos. Permite sortear GIL y usar eficientemente varios núcleos de CPU.

  3. Módulo asyncio — para programación asíncrona usando corutinas. Bueno para muchas operaciones de entrada/salida.

  4. Bibliotecas de alto nivel:

    • concurrent.futures.ThreadPoolExecutor y ProcessPoolExecutor — 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.