Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Introducción a Multiprocesamiento en Python

by
Difficulty:IntermediateLength:ShortLanguages:

Spanish (Español) translation by Betty (you can also view the original English article)

El paquete de multiprocesamiento apoya los procesos de desove utilizando una API similar al módulo threading. También ofrece concurrencia local y remota. Este tutorial explicará multiprocesamiento en Python y cómo utilizar multiproceso para comunicarse entre procesos y realizar la sincronización entre procesos, así como registro.

Introducción a Multiprocesador

Multiprocesamiento funciona creando un objeto del process y luego llamando a su método start() como se muestra a continuación.

En el código de ejemplo anterior, primero importamos la clase de proceso y luego instanciar el objeto del proceso con la función de saludo que queremos ejecutar.

Luego contamos el proceso para comenzar a usar el método start(), y finalmente terminamos el proceso con el método join().

Además, también puede pasar argumentos a la función proporcionando los argumentos argumento de palabra clave así:

Ejemplo

Veamos un ejemplo más detallado que cubre todos los conceptos que hemos discutido anteriormente.

En este ejemplo, vamos a crear un proceso que calcula el cuadrado de números e imprime los resultados en la consola.

También puede crear más de un proceso al mismo tiempo, como se muestra en el ejemplo siguiente, en que el proceso p1 obtiene los resultados de los números cuadrados, mientras que el segundo proceso p2 comprueba si los números dados son incluso.

Comunicación Entre Procesos

Multiprocesamiento admite dos tipos de canales de comunicación entre procesos:

  • Tubos
  • Colas de trabajos

Colas de Trabajos

Objetos de cola se utilizan para pasar datos entre procesos. Puede almacenar cualquier objeto de Python capaz de salmuera, y se pueden utilizar como se muestra en el ejemplo siguiente:

En el ejemplo anterior, primero creamos una función que comprueba si un número está incluso y luego pone el resultado en el final de la cola. Luego crear una instancia de un objeto de cola y un objeto del proceso y comenzar el proceso.

Finalmente, comprueba si la cola está vacía, y si no, obtenemos los valores de la parte delantera de la cola e imprimir en la consola.

Hemos demostrado cómo compartir datos entre dos procesos mediante una cola, y el resultado es como se muestra a continuación.

También es importante tener en cuenta que Python dispone de un módulo de cola que vive en el módulo de proceso y se utiliza para compartir datos entre subprocesos, a diferencia de la cola de multiprocesamiento que vive en la memoria compartida y se utiliza para compartir datos entre procesos.

Tubos

Tubos de multiprocesamiento se utilizan principalmente para comunicación entre procesos. Es tan simple como:

Pipe() devuelve dos objetos de conexión que representan los dos extremos de la tubería. Cada objeto de conexión tiene métodos send() y recv(). Aquí creamos un proceso que imprime el Hola mundo de cadena y entonces comparte los datos.

Resultado

Locks

Lock asegurándose de sólo un proceso se ejecuta en un momento, por lo tanto, bloquea otros procesos de ejecución de código similar. Esto permite que el proceso a realizar, y sólo entonces se puede lanzar la cerradura.

El siguiente ejemplo muestra un uso muy sencillo el método de bloqueo.

En este código, importar primero el método de bloqueo, adquirirla, ejecutar la función de imprimir y luego suéltelo

Registro

El módulo de multiprocesamiento también proporciona soporte para el registro, aunque el paquete de registro no utiliza bloqueos para mensajes entre procesos pueden ser mezclado para arriba durante la ejecución.

Uso de registro es tan simple como:

Aquí en primer lugar importamos la tala y los módulos de multiprocesamiento, y luego definir el método de multiprocessing.log_to_stderr(), que realiza una llamada a get_logger() así como la adición de un controlador que envía salida a sys.stderr. Por último, establecemos el nivel de registrador y el mensaje que queremos transmitir.

Conclusión

Este tutorial ha cubierto lo que es necesario empezar con multiprocesamiento en Python. Multiprocesamiento supera el problema de GIL (bloqueo Global del intérprete) ya que aprovecha el uso de subprocesos en lugar de hilos.

Hay mucho más en la documentación de Python que no está cubierta en este tutorial, así que siéntete libre de visitar la documentación de Python multiprocesamiento y utilizar toda la potencia de este módulo.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.