typestar

asyncio.gather en Python

Correr muchas corrutinas concurrentemente y juntar los resultados.

import asyncio


async def traer(nombre, demora):
    await asyncio.sleep(demora)
    return f"{nombre}: listo"


async def principal():
    resultados = await asyncio.gather(
        traer("usuarios", 0.3),
        traer("publicaciones", 0.2),
        traer("estadísticas", 0.1),
    )
    return resultados  # los tres corrieron de forma concurrente


respuestas = asyncio.run(principal())

Cómo funciona

  1. gather agenda las tres consultas a la vez.
  2. Se traslapan, así que el tiempo total es el de la más lenta, no la suma.
  3. Los resultados regresan en el orden de la llamada.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
347
Tokens
80
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 46 segundos.

Escribe este fragmento

Paso 2 de 4 en Async; paso 25 de 53 en Python pythónico.

← Anterior Siguiente →