Sobes.tech
Middle

¿Qué es la programación asíncrona (async)?

sobes.tech AI

Respuesta de la IA

La programación asíncrona es un paradigma que permite ejecutar múltiples tareas simultáneamente sin bloquear el hilo principal de ejecución del programa. Esto se logra mediante el uso eficiente del tiempo de espera (por ejemplo, en operaciones de entrada/salida).

Conceptos principales:

  • Corutinas: Funciones especiales que pueden pausar su ejecución y reanudarla más tarde. Se declaran con async def.
  • Bucle de eventos: El orquestador principal que gestiona la ejecución de las corutinas, supervisa los eventos y cambia entre tareas cuando una de ellas espera.
  • await: Palabra clave para pausar la ejecución de una corutina hasta que la operación esperada finalice (por ejemplo, llamar a otra corutina o esperar un resultado de I/O).

Ejemplo:

// Ejemplo de función asíncrona
import asyncio

async def fetch_url(url):
    print(f"Iniciando carga: {url}")
    await asyncio.sleep(2) // Simulación de una operación larga (por ejemplo, una solicitud de red)
    print(f"Carga completada: {url}")

async def main():
    # Crear tareas a partir de corutinas
    task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
    task2 = asyncio.create_task(fetch_url("http://example.com/page2"))

    # Esperar a que ambas tareas terminen
    await task1
    await task2

// Ejecutar el ciclo de eventos
if __name__ == "__main__":
    asyncio.run(main())

Ventajas:

  • Mejora del rendimiento: Especialmente para tareas vinculadas a I/O (solicitudes de red, trabajo con archivos).
  • Mejor uso de recursos: No se crean múltiples hilos o procesos, lo que reduce los costos adicionales.
  • Mantener la capacidad de respuesta: El hilo principal no se bloquea, lo cual es importante para aplicaciones interactivas o servidores.

La programación asíncrona es adecuada para:

  • Servidores web (por ejemplo, usando asyncio o FastAPI).
  • Análisis de sitios web.
  • Trabajar con bases de datos.
  • Cualquier tarea relacionada con la espera de recursos externos.