Coroutine: La parte del código que se puede pausar y reanudar en script múltiples se llama Coroutine. Las corutinas trabajan cooperativamente en un programa multiproceso. Cuando un Coroutine se detiene, entonces otra coroutina puede ejecutar.
Bucle de eventos: Se utiliza para iniciar la ejecución de las coroutinas y manejar operaciones de entrada/salida. Se necesitan múltiples tareas y completarlas.
Tarea: La ejecución y el resultado de las coroutinas están definidos por las tareas. Puede asignar un número múltiple de tareas usando la biblioteca Asyncio y ejecutar las tareas de manera asíncrona.
Futuro: Actúa como un almacenamiento futuro donde el resultado de las corutinas se almacenará después de la finalización. Esto es útil cuando cualquier coroutina requiere esperar el resultado de otra coroutina.
La forma en que puede implementar los conceptos anteriores de la biblioteca Asyncio se muestra en este tutorial utilizando algunos ejemplos simples.
Crea un archivo llamado async1.py y agregue el siguiente código. La biblioteca Asyncio se importa para usar las funciones de esta biblioteca. agregar se declara que la función calcula la suma de un rango particular de números. El rango de número de 1 a 101 es asignado por la tarea con un segundo retraso. El bucle de eventos se declara que se ejecutará hasta que todas las tareas del método principal completen. Después de calcular el valor, la función esperará un segundo e imprimirá el resultado.
importar asyncioProducción:
$ python3 async1.pyLa salida muestra la suma de 1 a 101 que es 5050.
Ejemplo-2: crear múltiples coroutinas
El uso de la biblioteca Asyncio se borrará cuando ejecute múltiples corutinas simultáneamente. Crea un nuevo archivo llamado async2.py y agregue el siguiente código. Se generan tres tareas con tres rangos diferentes y valores de espera en principal() método. La primera tarea calculará la suma de 5 a 500000 esperando 3 segundos, la segunda tarea calculará la suma de 2 a 300000 esperando 2 segundos y la tercera tarea calculará la suma de 10 a 1000 esperando 1 segundos. La tarea con valores de espera bajos se completará al principio y la tarea con un alto valor de espera se completará por fin.
importar asyncioProducción:
$ python3 async1.pyLa salida muestra que la tarea3 se completa primero porque el tiempo de espera de esta tarea fue de solo 1 segundo y la tarea 1 se completa el último porque el tiempo de espera de esta tarea fue de 3 segundos.
Ejemplo-3: Coroutinas con futuro
Este ejemplo muestra el uso del objeto futuro de la biblioteca Asyncio. Crea un nuevo archivo llamado async3.py y agregue el siguiente código. Se asignan dos tareas para el futuro en este ejemplo. Mostrar mensaje La función se declara aquí para imprimir el mensaje antes de ejecutar la coroutina y después de completar la ejecución. La primera tarea esperará 2 segundos y completará el último. La segunda tarea esperará 1 segundos y completará primero.
importar asyncioProducción:
$ python3 async3.pySe muestra en la salida que la tarea1 se inicia primero y se completa el último, y la tarea2 se inicia más tarde, pero se completa primero por tiempo de espera corto.
El concepto básico de programación asincrónica utilizando la Biblioteca de Python de Asyncio se explica aquí. Espero que pueda escribir código multiproceso en Python después de practicar los ejemplos de este tutorial.