Index du contenu
La función main() es el punto de entrada para el programa y llama: asyncio.run(hacer_algo()) Esto inicia la ejecución del bucle de eventos Async IO y da como resultado el do_some- La función thing () se envuelve en una tarea que es administrada por el ciclo. Nota que no cree explícitamente una tarea en Async IO; siempre son creados por alguna función, sin embargo, es útil estar al tanto de las tareas, ya que puede interactuar con para comprobar su estado o para recuperar un resultado. La función do_something() está marcada con la palabra clave async: definición asíncrona hacer_algo(): print(‘hacer_algo - esperará al trabajador’) resultado = esperar trabajador() print(‘hacer_algo - resultado:’, resultado) Como se mencionó anteriormente, esto indica que se puede ejecutar como una tarea separada y que puede utilizar la palabra clave await para esperar a que se produzca alguna otra función o comportamiento. completo. En este caso, la función asíncrona do_something() debe esperar la función del trabajador () para completar. La palabra clave await hace más que simplemente indicar que el do_something () La función debe esperar a que se complete el trabajador. Activa otra tarea para ser creado que ejecutará la función de trabajador () y libera el procesador permitiendo que Event Loop seleccione la siguiente tarea a ejecutar (que puede o no ser la tarea que ejecuta la función trabajador()). El estado del do_something la tarea ahora está esperando mientras el estado de la tarea del trabajador () está listo (para ejecutarse). El código para la tarea del trabajador se proporciona a continuación: trabajador asíncrono de definición (): print(’trabajador - tomará algún tiempo’) tiempo.dormir(3) print(’trabajador - Listo’) volver 42 La palabra clave async nuevamente indica que esta función se puede ejecutar como una tarea. Sin embargo, esta vez el cuerpo de la función no usa la palabra clave await. Esto se debe a que se trata de un caso especial conocido como función corrutina Async IO. Este es una función que devuelve un valor de una tarea (está relacionado con la idea de un estándar Python coroutine que es un consumidor de datos). Tristemente, Computer Science tiene muchos ejemplos donde el mismo término ha sido utilizado para diferentes cosas, así como ejemplos en los que se han utilizado diferentes términos por lo mismo En este caso, para evitar confusiones, solo quédese con Async IO coroutines son funciones marcadas con async que se pueden ejecutar como una tarea separada y puede llamar esperar. 410 34 Concurrencia con AsyncIO
popular post
Temas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza
Lire plusTemas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza
Lire plus• https://docs.python.org/3/ El sitio principal de documentación de Python 3. Contiene tutoriales, referencias de bibliotecas, guías de configuración e instalación, así como Python cómo-tos • https://docs.
Lire plus