Asincronia
La asincronía en Python es un modelo de programación que permite ejecutar tareas de manera concurrente, sin bloquear el flujo principal del programa mientras espera que se completen operaciones lentas como leer archivos, acceder a bases de datos o hacer peticiones de red.
¿Por qué usar asincronía?
Sección titulada «¿Por qué usar asincronía?»Cuando ejecutas código de forma secuencial (sincrónica), si una función tarda mucho (por ejemplo, en recibir datos de internet), el resto del programa se detiene hasta que termine. Con la asincronía, puedes decirle a Python:
¿Cómo se implementa?
Sección titulada «¿Cómo se implementa?»Python introduce la asincronía usando dos palabras clave:
-
asyncio
: importas asyncio para acceder a funciones de asincronía -
async
: para definir una función asincrónica -
await
: para esperar el resultado de una operación asincrónica
import asyncio
async def saludar():print('Hola')await asyncio.sleep(1) # Espera un segundoprint('Mundo')
# Ejecutar la función asincrónicaasyncio.run(saludar())
Salida:
Hola(espera 1 segundo)Mundo
Funciones comunes en asyncio
Sección titulada «Funciones comunes en asyncio»Función | Descripción |
---|---|
asyncio.run() | Ejecuta una corutina principal desde código síncrono. |
asyncio.sleep() | Pausa una corutina sin bloquear el hilo principal. |
asyncio.create_task() | Inicia una tarea asincrónica en segundo plano, sin esperar su resultado. |
asyncio.wait() | Similar a gather(), pero con más control sobre el tiempo de espera y errores. |
asyncio.as_completed() | Ejecuta tareas y permite manejar los resultados a medida que se completan. |
asyncio.TimeoutError | Excepción para manejar límites de tiempo. |
asyncio.gather() | Ejecuta varias funciones asincrónicas al mismo tiempo (concurrentemente) y espera a que todas terminen. |