Series

Palabras clave en Python: async

Leodanis Pozo Ramos
Leodanis Pozo Ramos
03 mar 2026 3 min
Palabras clave en Python: async

En Python, la palabra clave async se utiliza para definir funciones y bloques de código que se ejecutan de manera asíncrona sin bloquear el programa principal.

Esta palabra clave resulta especialmente útil para operaciones que pueden llevar tiempo, como la lectura de archivos o las solicitudes de red, debido a que permite que el programa continúe ejecutándose mientras espera que estas operaciones se completen.

Sintaxis

La sintaxis básica para definir una función asíncrona con def es la siguiente:

async def function_name():
    <block>  # Async code here

También puedes usar async con la sentencia with para crear gestores de contexto asíncronos:

async with resource as alias:
    <block>  # Async code here

Y con ciclos for para iterar de forma asíncrona:

async for item in async_iterable:
    <block>  # Async code here

Ejemplos prácticos

Aquí tienes algunos ejemplos que ilustran cómo se usa async en Python:

>>> import asyncio

>>> async def greeting():
...     print("Hola")
...     await asyncio.sleep(1)
...     print("Mundo")
...

>>> asyncio.run(greeting())
Hola
Mundo

En este ejemplo, la función greeting() utiliza async y await para pausar la ejecución durante un segundo entre las dos impresiones. La función asyncio.run() se utiliza para ejecutar la función asíncrona.

El siguiente ejemplo muestra cómo async te permite ejecutar varias solicitudes de red de forma concurrente. Para ello, usarás la biblioteca aiohttp junto con la API pública JSONPlaceholder para obtener la información de varios usuarios al mismo tiempo.

Antes de ejecutar el ejemplo, instala aiohttp en tu entorno virtual con el siguiente comando:

$ pip install aiohttp

Una vez instalada la biblioteca, crea un archivo con el siguiente código:

# fetch_users.py

import asyncio
import aiohttp

async def fetch_user(session, user_id):
    url = f"https://jsonplaceholder.typicode.com/users/{user_id}"
    async with session.get(url) as response:
        data = await response.json()
        print(f"Usuario {user_id} recibido")
        return data

async def main():
    async with aiohttp.ClientSession() as session:
        tasks = [
            fetch_user(session, 1),
            fetch_user(session, 2),
            fetch_user(session, 3),
        ]
        results = await asyncio.gather(*tasks)
        for user in results:
            print(f"Usuario {user['id']}:")
            print(f"  Nombre: {user['name']}")
            print(f"  Email: {user['email']}")
            print(f"  Empresa: {user['company']['name']}")
            print()

asyncio.run(main())

Si ejecutas este script, obtendrás la siguiente salida:

Usuario 2 recibido
Usuario 3 recibido
Usuario 1 recibido

Usuario 1:
  Nombre: Leanne Graham
  Email: Sincere@april.biz
  Empresa: Romaguera-Crona

Usuario 2:
  Nombre: Ervin Howell
  Email: Shanna@melissa.tv
  Empresa: Deckow-Crist

Usuario 3:
  Nombre: Clementine Bauch
  Email: Nathan@yesenia.net
  Empresa: Romaguera-Jacobson

En este ejemplo, las tres llamadas a fetch_user() se lanzan de forma concurrente con asyncio.gather(). Las solicitudes se realizan al mismo tiempo en lugar de esperar a que cada una termine antes de iniciar la siguiente. Esto ilustra la ventaja principal de la programación asíncrona: aprovechar los tiempos de espera en operaciones de red para realizar otras solicitudes de forma simultánea.

Uso de async

Los casos de uso más comunes de la palabra clave async incluyen los siguientes:

  • Definir funciones asíncronas que realizan operaciones de entrada/salida de larga duración sin bloquear el hilo principal del programa
  • Mejorar el rendimiento de las aplicaciones al permitir que múltiples operaciones se ejecuten simultáneamente
  • Usar en combinación con await para esperar el resultado de una operación asíncrona sin bloquear la ejecución del código

Resumiendo

La palabra clave async en Python es fundamental para escribir código asíncrono, lo que permite realizar operaciones concurrentes de manera eficiente.

Conocer y utilizar async te ayuda a mejorar el rendimiento de tus aplicaciones, especialmente cuando se trata de operaciones de E/S que resultan lentas o bloquean el flujo del programa.