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
Crear objeto proceso
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