Threadpoolexecutor python

Threadpoolexecutor python
ThreadPoolExecutor es una clase de Python que se encuentra en su paquete llamado "Concurrente.futuros". Digamos que necesitamos hacer muchos hilos en nuestros trabajos altamente paralelos. Es el más costoso, porque puede haber varias preocupaciones de eficiencia como resultado de tener tantos más procesos. Una gran preocupación podría ser que el rendimiento se limite. Puede superar este problema construyendo un grupo de hilos. Un grupo de subprocesos es una colección de procesos preinstanciados o inactivos que están esperando que se le asignen trabajo. Siempre que se complete un conjunto significativo de actividades, generalmente se recomienda establecer un grupo de hilos para desarrollar nuevos procesos para cada trabajo. Un grupo de subprocesos puede hacer las siguientes tareas:
  • Una vez que un proceso dentro de un grupo de subprocesos ha completado su procesamiento, podría usarse nuevamente.
  • Cuando se termina un hilo, se forma un nuevo hilo para ocupar su lugar.

El concurrente.El paquete de futuros es una parte de la biblioteca regular de Python. En Python 3.2, este paquete fue creado para brindar a los programadores una interfaz elevada para iniciar procesos concurrentes. Ese es un nivel intermedio construido sobre la multitarea de Python, así como paquetes de multiprocesamiento que le permite realizar tareas utilizando un grupo de hilos o procedimientos. Dentro de este artículo, echaremos un vistazo a la clase de ejecutor de grupo de subprocesos y sus funciones.

Ejemplo 01:

Echemos un vistazo a la clase de ejecutor de grupo de subprocesos dentro de nuestro código Python. En primer lugar, hemos utilizado el "concurrente.Paquete de futuros "utilizando la palabra clave" from "en la primera línea para importar la clase" Threadpoolexecutor "en el código. Después de esto, hemos inicializado una lista de 4 números. La primera función es una función definida por el usuario llamada "cuadrado" y calculará un cuadrado de un valor aprobado en sus argumentos. El otro método es la función del constructor i.mi., método main () a medida que la ejecución comienza desde i. Entonces, la función definida por el usuario "cuadrado" se define utilizando la palabra clave "def" y toma el valor del argumento para calcular su cuadrado.

Los soportes "" se utilizan para tomar el valor numérico de una variable "z" en lugar de tomar "z" como una cadena aquí. El carácter "F" antes de que el texto y la declaración de cálculo muestren que los valores se tomarán como flotadores y se calculará su cuadrado. La declaración de impresión está utilizando este formato para obtener un cuadrado e imprimirlo en el shell de salida SPYDER3. Ahora, aquí viene el constructor de función principal (). El constructor está inicializando una lista vacía llamada "Val". Es hora de usar la clase ThreadPoolExecutor para hacer un grupo de 5 hilos para usar asincrónicamente.

Para esto, utilice la declaración "con" con el nombre "ThreadPoolExecutor" tomando un argumento "Max_Workers" con el valor 5. Puede verlo como un bucle que toma 1 valor cada vez. La función Enviar de la clase ThreadPoolExeCutor se usa para ejecutar una función I.mi., "Cuadrado" y produce un cuadrado de un número que le pasó a. Está tomando el número 1 como valor inicial al método cuadrado y después de esto, tomará los valores de la lista "L". La función de "mapa" se usa aquí para traducir rápidamente la función e iterable colectivamente como una y plantea un error en el "concurrente.paquete de futuros ". La excepción se almacenará a la variable "Val" y la instrucción de impresión se utilizará para mostrar la excepción utilizada en el bucle "para" en la pantalla de salida.

de concurrente.Futures Importación ThreadPoolExecutor
L = [2,3,4,5]
Def Square (Z):
print (f'Square de z: z*z ')
Si __name__ == '__main__':
val = []
con ThreadPoolExecutor (max_workers = 5) como exe:
exe.Enviar (cuadrado, 1)
val = exe.Mapa (cuadrado, L)
para res en val:
Imprimir (Res)

El conjunto de 5 hilos se ha creado para calcular un cuadrado de 5 valores a partir de 1 a 5 como se muestra en la salida.

Ejemplo 02:

Aquí viene el último ejemplo de usar la clase Threadpoolexecutor en el código Python. Por lo tanto, hemos comenzado estos nuevos ejemplos con la importación de una clase utilizando su paquete "concurrente.futuros". Luego, inicialice una variable "suma" con 0 valor. La función definida por el usuario llamada "proceso" se declara tomar un argumento "n" en ella. Esta función está imprimiendo los números de subprocesos a través de la instrucción de impresión. El número de subproceso se resume con el número 5 agregado a la variable "suma". Esta suma calculada para cada hilo se mostrará en la salida que emplea la declaración de impresión. La definición del método principal se ha iniciado aquí. Está usando el threadpoolexecutor para la creación de un grupo de 3 hilos. La función de "proceso" se ha llamado 3 veces utilizando la función "enviar" para 3 valores diferentes. Después de ejecutar todos los hilos del método de proceso, se mostrará el mensaje de finalización. La declaración de función principal () se usa después de eso.

de concurrente.Futures Importación ThreadPoolExecutor
Suma = 0
proceso de def (n):
imprimir ("procesar el hilo: ".formato (n))
Suma = n + 5
imprimir ("suma de y 5 es:".formato (n), suma)
Def Main ()::
Imprimir ("Iniciar ThreadPoolExecutor")
con ThreadPoolExecutor (max_workers = 3) como ex:
val = ex.enviar (proceso, (2))
val = ex.enviar (proceso, (4))
val = ex.enviar (proceso, (5))
Imprimir ("Todos los hilos se procesan por completo")
Si __name__ == '__main__':
principal()

La ejecución muestra que el grupo se inicia y se muestra cada número de hilo con su suma con el número 5.

Conclusión:

Hemos cubierto y discutido la clase Threadpoolexecutor y todas las funciones posiblemente utilizadas en nuestros ejemplos. Deberíamos hacerlo como sin pretensiones como probables para nuestros usuarios. Hemos echado un vistazo a un mapa y envíe la función también. Esperamos la mejor respuesta.