Introducción a la programación asíncrona con Asyncio de Python

Cómo Manejar la E/S Asíncrona en Python

Este tutorial proporciona una visión general de la programación asíncrona en Python utilizando el módulo asyncio. Aprender a escribir código asíncrono con async/await y ver ejemplos prácticos de E/S asíncrona.

Programación
Autor/a
Afiliación
Fecha de publicación

5 de febrero de 2024

Fecha de modificación

9 de mayo de 2025

Palabras clave

Tutorial Python de Asyncio, Programación asíncrona en Python, Ejemplo asíncrono en Python

Introducción

La programación asíncrona es un enfoque poderoso para escribir código concurrente que pueda manejar múltiples tareas simultáneamente. El módulo asyncio de Python proporciona un marco de trabajo para escribir programas asíncronos utilizando las palabras clave async y await, lo que permite gestionar de forma eficiente el código de red estructurado de alto nivel y limitado a E/S.

En este tutorial aprenderás: - Conceptos básicos de la programación asíncrona. - Cómo utilizar el módulo asyncio de Python para escribir funciones asíncronas. - Ejemplos prácticos de E/S asíncrona.



Qué es la programación asíncrona?

La programación asíncrona permite que un programa inicie una tarea y continúe sin esperar a que se complete. Este enfoque no bloqueante es ideal para manejar operaciones como peticiones de red, E/S de archivos u otras tareas que pueden tardar en completarse. Mediante el uso de asyncio, puede mejorar la capacidad de respuesta y la eficiencia de sus aplicaciones.

Conceptos Básicos de Asyncio

  • Funciones Async:
    Definición utilizando la sintaxis async def. Devuelven una coroutine, que es un tipo especial de iterador que se puede esperar.

  • Await:
    La palabra clave await se utiliza para pausar la ejecución de una función asíncrona hasta que se complete una coroutine.

  • Bucle de eventos:
    El bucle de eventos es el núcleo de toda aplicación asíncrona. Programa y gestiona tareas asíncronas y devoluciones de llamada.

Un Ejemplo Simple de Asyncio

A continuación se muestra un ejemplo que demuestra una función asíncrona básica en Python:

import asyncio

# Definir una función asíncrona utilizando async def
async def greet(name):
    print(f"Hello, {name}!")
    # Simular un retraso asíncrono (por ejemplo, E/S de red)
    await asyncio.sleep(1)
    print(f"Goodbye, {name}!")

# Función principal para ejecutar la función asíncrona
async def main():
    # Programa la coroutina greet para que se ejecute para dos nombres de forma concurrente
    await asyncio.gather(
        greet("Alice"),
        greet("Bob")
    )

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

Explicación:
- La función greet se define como una función asíncrona que imprime un saludo, espera un segundo utilizando await asyncio.sleep(1) y, a continuación, imprime un mensaje de despedida.
- La función main utiliza asyncio.gather para ejecutar dos instancias de greet concurrentemente.
- asyncio.run(main()) inicia el bucle de eventos y ejecuta la coroutina main.

Características Avanzadas de Asyncio

Una vez que se sienta cómodo con los conceptos básicos, puede explorar características más avanzadas de asyncio, tales como:

  • E/S Asíncrona con Streams:
    Manejo de conexiones de red utilizando sockets asíncronos.
  • Programación de tareas:
    Gestionar y programar múltiples tareas asíncronas.
  • Integración con otras librerías:
    Combinando asyncio con otros frameworks para desarrollo web o procesamiento de datos.

Conclusión

La programación asíncrona con el módulo asyncio de Python puede mejorar enormemente el rendimiento de las aplicaciones vinculadas a E/S y mejorar la capacidad de respuesta de su código. Entendiendo los conceptos básicos y practicando con ejemplos como el anterior, estarás bien equipado para empezar a escribir tus propios programas asíncronos.

Lecturas adicionales

Feliz codificación, y disfruta explorando la programación asíncrona con asyncio de Python!

Explorar más artículos

Nota

Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.

placeholder

placeholder
No hay resultados
Volver arriba

Reutilización

Cómo citar

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Introducción a la programación asíncrona con Asyncio de
    Python},
  date = {2024-02-05},
  url = {https://www.datanovia.com/es/learn/programming/python/advanced/asyncio.html},
  langid = {es}
}
Por favor, cita este trabajo como:
Kassambara, Alboukadel. 2024. “Introducción a la programación asíncrona con Asyncio de Python.” February 5, 2024. https://www.datanovia.com/es/learn/programming/python/advanced/asyncio.html.