Futuros concurrentes de Python

Futuros concurrentes de Python
"Similar a cómo podemos construir y utilizar el conjunto de hilos, se puede formar y utilizar un grupo de procesos. Los grupos de procesos son colecciones de procesos de ralentí, previamente creados que esperan ser tareas asignadas. Siempre que necesitemos realizar varias acciones, el uso de un grupo de procesos es mejor para construir procedimientos innovadores para cada actividad. El concurrente.Futures es un componente que se encuentra en la Biblioteca estándar de Python. Para dar a los programadores una interfaz elevada para iniciar procesos concurrentes, este paquete se introdujo en Python 3.2.

La interfaz para realizar tareas utilizando un conjunto de hilos o procesos es proporcionada por esta capa de encapsulación sobre los componentes multitarea y multitreística de Python. El concurrente.El módulo de futuros de Python se le ocurrió un "ejecutor" de clase abstracta junto con sus subclases concretos que se están utilizando en lugar de la clase "Ejecutor". Es porque la clase de "ejecutor" no se puede utilizar directamente en el código."

Ejemplo 01

Comencemos con la primera ilustración de nuestro artículo. Le mostraremos el uso de la subclase ProcessPoolExecutor del "ejecutor" en esta ilustración, yo.mi., recibir un flujo de tareas para completar los trabajos, ya que emplea el procesamiento múltiple. Esa transmisión asigna trabajos a los hilos existentes y planea su ejecución. Hemos comenzado este programa Python con el uso de "concurrente.Módulo de futuros ”que importa su subclase Processpoolexecutor aquí en el código.

Después de eso, hemos estado importando la clase de sueño de un módulo de tiempo en Python mediante el uso de palabras clave de importación e importación. Estamos definiendo una función con el nombre "hilo", tomando una variable de mensaje como argumento en ella. Esta función ha estado utilizando la función de llamada a la función de Sleep () de Python para que la ejecución se detenga solo por 2 segundos y devuelva el mensaje a la función Main ().

Mientras que la definición de función principal () se ha iniciado con la llamada a la función "ProcesspoolExecutor" de concurrente.Módulo de futuros para crear un grupo de 5 procesos y guardar el resultado del grupo en un objeto "Ejecutor". Este objeto "ejecutor" se ha utilizado para llamar a la función "enviar" para crear 5 hilos transmitiendo un mensaje "completado" en los parámetros. La ejecución de la función intentó dormir durante 2 segundos y devolver el mensaje. El resultado devuelto se guardaría en la variable "Future". Hemos estado llamando a la función "Hecha" con la variable de objeto futuro dentro de la instrucción "Imprimir" de la función Python para mostrar el resultado devuelto, I.mi., verdadero o falso.

Después de esto, hemos estado utilizando la función de sueño para que la ejecución del programa continúe después de 5 segundos y luego verifique el resultado del grupo de ejecutores con el uso de la función de hecho del objeto futuro. Al final, el objeto "futuro" se ha utilizado para llamar a la función de resultado () incorporada de Python concurrente. Módulo de futuros para ver el resultado real, yo.mi., Completado al final.

En las últimas líneas, podemos ver que la función principal () se ha llamado aquí. Guardemos y ejecutemos nuestro código para ver el resultado real para usar el concurrente.Paquetes de futuros en programas de Python. La imagen a continuación incluye el código para la explicación mencionada también.

Después de ejecutar este programa en Spyder 3, tenemos el resultado de Below Shows en la herramienta SPYDER3. Cuando se ha iniciado el grupo de ejecutores de 5 hilos, llama a la función del hilo y duerme durante 2 segundos, y luego devuelve el mensaje. Como el proceso de la piscina aún no se completa, así el "futuro.Dado "Devuelve False, y hemos mostrado el resultado" falso ". La ejecución de este programa duerme durante los próximos 5 segundos y luego muestra el resultado de "futuro.hecho "de nuevo.

A medida que se pasan un total de 5 segundos, y el grupo se ha ejecutado con éxito, devuelve verdadero en este caso. Por fin, el "futuro.La función de resultado "mostró el mensaje" completado "para el grupo de 5 procesos de ejecución completa. Este es el resultado esperado del código indicado anteriormente.

Ejemplo 02

Echemos un vistazo a otro ejemplo para usar la subclase ProcessPoolExecutor de concurrente.Módulo de futuros en Python. Entonces, hemos importado el subclase ProcessPoolExecutor aquí. Después de esto, hemos inicializado una lista "NUM" de 4 valores numéricos diferentes, I.mi., 14, 7, 3, 15. Hemos estado utilizando un total de 2 funciones en este programa. La ejecución de la función Main () se inició con el uso del Manager de contexto ProcessPoolExeCutor.

Context Manager puede usarse como un segundo método para crear instancias de ProcessPoolExecutor. Funciona de manera similar al enfoque que se muestra en el ejemplo anterior. La mejor característica del gerente de contexto es lo atractivo sintácticamente que es. Entonces, lo hemos estado usando aquí para crear un grupo de 3, yo.mi., Trabajadores totales. Con esto, el ejecutor ha estado utilizando la función map () para pasar una cantidad de cada elemento de una lista de "num" como parámetro para la función "cubo" para mapear. La función de cubo devolverá el cubo de cada número que se le pase desde la lista mediante el uso de fórmulas "N*n*n" y guardará el resultado devuelto a la variable "R".

El bucle "para" está aquí para usar el resultado "R" para cada elemento para mostrar cada valor devuelto de la función Cube en la consola mediante el uso de la función "Imprimir" con la variable "Val". Las últimas 2 líneas muestran el uso de la llamada de función principal (). La imagen a continuación incluye el código para la explicación mencionada también.

La salida ha estado mostrando el cubo de todos los 4 elementos de la lista "NUM". Este es el resultado esperado del código indicado anteriormente.

Conclusión

Este artículo trata sobre el uso del "concurrente.Módulo de futuros "de Python en los programas para ver sus usos. En nuestro primer ejemplo, lo hemos utilizado para crear un grupo de 5 procesos y devolver el resultado antes y después del uso de la función de sueño en el código. Después de esto, utilizamos otro ejemplo para consumir el "concurrente.Módulo de futuros "y muestre algunos cálculos matemáticos en nuestra consola de herramienta Python Tool Sypder Tool.