Piscina de multiprocesamiento de Python

Piscina de multiprocesamiento de Python
El despliegue de dos o incluso más unidades de procesamiento central en un sistema de procesadores se conoce como multiprocesamiento. La funcionalidad del sistema podría mejorarse considerablemente mediante el multiprocesamiento. Python solo utiliza una unidad de procesamiento central debido a Gil. A diferencia del idioma C o el idioma Java, que instantáneamente emplea el multiprocesamiento. Es un enchufe que solo permite que un proceso se ejecute simultáneamente. El paquete de multiprocesamiento en Python, por lo tanto, puede abordar ese problema. Hay dos modos en esta unidad que incluyen el proceso y el grupo. Estos pueden ayudarnos a ejecutar una parte específica de código simultáneamente.

Sintaxis de la función de grupo ():

Construiríamos explícitamente procedimientos en la clase de proceso. Aunque, la clase de la piscina parece ser más útil porque podemos manejarlo dinámicamente. Para construir un objeto de grupo, utilice la sintaxis:

Cada parámetro es opcional. El 'initARGS' es el tercer parámetro pasado al método, también se proporcionará el segundo parámetro 'inicializador', que se utiliza para la inicialización. El 'MaxTaskSperChild' denota el número total de operaciones que se ha otorgado a cada proceso infantil. El proceso se actualizaría con un nuevo procedimiento de trabajadores después de completar las operaciones.

Discutamos un grupo de multiprocesamiento adicional:

Ejemplo no 1:
Echemos un vistazo a la ilustración a continuación, que calcula el cuadrado del entero y duerme el código para un segundo.

tiempo de importación
del grupo de importación de multiprocesamiento
Def cuadrado (a):
imprimir (f "Aquí comienza el proceso: a")
cuadrado = a * a
imprimir (f "cuadrado a: cuadrado")
tiempo.dormir (1)
imprimir (f "ehere el proceso termina: a")
Si __name__ == "__main__":
start_t = time.tiempo()
Pool = Pool ()
piscina.Mapa (cuadrado, rango (0, 9))
piscina.cerca()
end_t = tiempo.tiempo()
print (f "El tiempo total tomado es end_t-start_t segundos")

Al comienzo del código, tenemos que importar el módulo de tiempo y el módulo de grupo. La biblioteca de la piscina se integrará a partir del multiprocesamiento. Definimos la función cuadrada (). A continuación, utilizamos el método print () para mostrar el mensaje 'Aquí comienza el proceso'. Aquí, obtenemos el cuadrado del número multiplicando el número entre sí. Una vez más, llamamos a la función print () para mostrar el cuadrado del número definido. Definimos la función sleep () para establecer el marco de tiempo del código.

Ahora, la declaración de impresión imprime la línea que muestra que el proceso se termina. Comencemos con el cuerpo de la función principal. Invocamos el método Time () del tiempo del módulo. Construimos un artículo de clase de billar. El método que nos gustaría replicar y un ITerable se ha proporcionado como parámetros del método map ().

Además, acepta un parámetro adicional de 'fragmento' que divide el iterable en segmentos de igual tamaño y recibe este como una operación distinta. El parámetro al método map () se aplica como el rango. Para negar nuevas operaciones, utilice la piscina.Método Cerrar ().

Ejemplo no 2:
En este caso, estableceremos el marco de datos del código durante 2 segundos utilizando el método Sleep ().

tiempo de importación
del grupo de importación de multiprocesamiento
Def cuadrado (a):
imprimir (f "El proceso comienza ahora a")
cuadrado = a * a
tiempo.dormir (2)
imprimir (f "El proceso termina ahora a")
cuadrado de retorno
Si __name__ == "__main__":
Pool = Pool ()
x = piscina.Mapa (cuadrado, rango (0, 7))
Imprimir (x)

El paquete de tiempo y el paquete de la piscina deben importarse al comienzo del programa. El multiprocesamiento se incorporará con la biblioteca de la piscina. El método cuadrado () se define. El mensaje "El proceso comienza ahora" se muestra luego utilizando la función print (). Al multiplicar los valores, podemos obtener el cuadrado del número en este escenario.

Para establecer el tiempo del código, invocamos el método Sleep (). Además, el comando de impresión muestra una línea que indica que el proceso ha terminado. Dentro del cuerpo de la función principal, invocaremos el método de piscina (). El mapa de funciones () se ha utilizado en la siguiente línea. Esta función contiene dos parámetros. El primer argumento muestra el cuadrado del número. Y el segundo parámetro usa el método de rango ().

Definimos los límites más bajos y más altos dentro de la función de rango (). Al final, hemos estado llamando a print () para mostrar el resultado.

Ejemplo no 3:
Increíblemente similar a la piscina.La función map () es el grupo.imap (). La distinción aquí es que el resultado de cada elemento se proporciona tan inmediatamente como se procesa, en lugar de tener que esperar a que se completen todos los elementos. Además, el iterable se transforma en un conjunto por la función map (). La técnica imap (), por lo tanto, no.

tiempo de importación
del grupo de importación de multiprocesamiento
Def Square (x1):
print (f "El proceso stHe ha comenzado x1")
cuadrado = x1 * x1
tiempo.dormir (9)
print (f "El proceso ha finalizado x1")
cuadrado de retorno
Si __name__ == "__main__":
Pool = Pool ()
x2 = piscina.IMAP (cuadrado, rango (0, 4))
para j en x2:
imprimir (f "El resultado está aquí j")

Primero, debemos incluir el marco de tiempo y grupo. Tomamos la biblioteca de la piscina del paquete de multiprocesamiento. Llamamos a la función cuadrada (). Esta función contiene el número requerido como su argumento. Para mostrar el mensaje que indica que el proceso ha comenzado, hemos estado llamando a la función print (). Al multiplicar los valores en este caso, podemos obtener el cuadrado del número especificado. Para determinar el tiempo del código, invocamos el método de sueño (). La declaración que indica que el proceso ha terminado ha sido imprimido por la función de impresión. El cuadrado del entero especificado es devuelto por la función.

Comencemos el cuerpo de la función principal ahora. La función de piscina () se utilizará. La siguiente línea utiliza el método map (). Hay dos parámetros para este método. El cuadrado del entero se proporciona como el primer parámetro. La función de rango () se está utilizando como el segundo argumento. Dentro del método de rango (), se especifican las limitaciones inferiores y superiores. Antes de finalizar el código, utilizaremos el bucle 'para'. Inicializamos la variable de bucle. Este bucle itera hasta que se cumpla la condición dada. Después de esto, el método print () se aplica para representar el resultado.

Conclusión

En esta guía, hemos hablado sobre el grupo de Python multiprocesamiento. Cuando se necesitan numerosos procesos para operar simultáneamente o una operación larga tendrá que ser acelerado, el multiprocesamiento es vital. Cuando un proceso se ejecuta en un solo hilo, sus capacidades están limitadas; De lo contrario, esto estiraría sus tentáculos a través de numerosos hilos. Python ofrece una interfaz simple para implementar el multiprocesamiento si la operación que requiere mucho tiempo puede ejecutarse simultáneamente y todo el sistema admite muchas arquitecturas de procesadores. Hemos ejecutado tres instancias en los que establecemos el marco de tiempo del código.