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
gatheragenda las tres consultas a la vez.- Se traslapan, así que el tiempo total es el de la más lenta, no la suma.
- Los resultados regresan en el orden de la llamada.
Palabras clave y builtins usados aquí
asyncawaitdefreturn
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.
Paso 2 de 4 en Async; paso 25 de 53 en Python pythónico.