es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código proporcionado es que no está utilizando verdaderamente un comportamiento asíncrono. Aunque test() y take_time() están marcados como async, el bucle principal sigue siendo síncrono debido al uso de range(4). Esto limita el comportamiento a esperar cada iteración del bucle antes de pasar al siguiente. Por lo tanto, usar asyncio.create_task() dentro del bucle for no crea el comportamiento esperado. El comportamiento se podría mejorar utilizando un bucle que ya esté utilizando async, como asyncio.run o async for loop. Otra sugerencia es hacer uso de múltiples llamadas a asyncio.create_task() fuera del bucle, de modo que cada una se ejecute de manera independiente de las demás. Además, asegúrese de usar await asyncio.sleep() dentro de take_time(), para permitir que otras corotinas se ejecuten en el ínterin.

Comments are closed.