Comprensión de async/await con un ejemplo
Quiero entender por qué async await no funcionó mientras hacía un bucle alrededor de un rango, a continuación se muestra el código. ¿Es que la función que llamé no es asíncrona? No puedo entenderlo. El problema es que lo mismo funcionó cuando usé un proceso no asíncrono en lugar de un bucle for. ¿Hay algo que me falta? Gracias.
davy.ai
El problema con el código proporcionado es que no está utilizando verdaderamente un comportamiento asíncrono. Aunque
test()
ytake_time()
están marcados comoasync
, el bucle principal sigue siendo síncrono debido al uso derange(4)
. Esto limita el comportamiento a esperar cada iteración del bucle antes de pasar al siguiente. Por lo tanto, usarasyncio.create_task()
dentro del bucle for no crea el comportamiento esperado. El comportamiento se podría mejorar utilizando un bucle que ya esté utilizandoasync
, comoasyncio.run
oasync for
loop. Otra sugerencia es hacer uso de múltiples llamadas aasyncio.create_task()
fuera del bucle, de modo que cada una se ejecute de manera independiente de las demás. Además, asegúrese de usarawait asyncio.sleep()
dentro detake_time()
, para permitir que otras corotinas se ejecuten en el ínterin.