Repaso
English
PythonAvanzadoPY-44

Explica cómo funciona asyncio y cuándo lo elegirías frente a threads o procesos.

Respuesta

  • Un thread, un event loop. Las coroutines (async def) devuelven el control en cada await, así que el loop puede ejecutar otras tareas mientras una espera I/O.
  • Cooperativo: cualquier llamada bloqueante (trabajo de CPU, time.sleep, un driver de base de datos síncrono) lo congela todo.
  • Herramientas: asyncio.gather, TaskGroup, create_task, Semaphore para limitar la concurrencia, wait_for para timeouts.
  • Elige asyncio para muchas operaciones de I/O simultáneas (miles de sockets, fan-out de APIs, websockets).
  • Threads: más simples para unas pocas llamadas bloqueantes con librerías síncronas.
  • Procesos: trabajo CPU-bound.
  • Ejecuta código bloqueante desde async con asyncio.to_thread / run_in_executor.

Términos clave

Practica esta pregunta en Repaso