Multiprocessing

Es una técnica de programación y un enfoque de diseño de sistemas informáticos que involucra la ejecución simultánea de múltiples procesos o hilos de ejecución. Es una forma de crear procesos en alto nivel. A diferencia del procesamiento secuencial, donde las tareas se ejecutan una tras otra, el multiprocessing permite que varias tareas se ejecuten de manera concurrente, aprovechando así los recursos del sistema de manera más eficiente. (Usa fork() por abajo)

Es similar a Threading (librería para crear hilos).

Creacion de proceso

  1. Crear objeto proceso

  2. Lanzarlo

hijo = mp.Process(target=funcion, args=(5,) # args son los argumentos de la funcion

Ver estado de proceso

**proceso.is_alive**() # ve el estado del hijo, si esta started o stopped

Manejo de tuberias

**mp.Pipe()** # es como **os.pipe()** pero en alto nivel (en bajo nivel, se comporta como socket)

La gran diferencia de multiprocessing pipe, es que este es bidireccional, contrario al anterior que era unidireccional.

Colas

Queue – colas de mensaje (en bajo nivel, se comporta como pipe), su forma de acceso es del tipo FIFO.

Caracteristicas

Para cuando trabajo con uno o dos hijos no mas, me conviene usar Pipe, porque es mas eficiente y rapido que Queue, pero cuando trabajo con muchos procesos, conviene usar Queue

**get(block, [timeout]) #** timeout: tiempo que espera en segundos