[pyar] multiprocessing, FIFOs y mapas

Facundo Batista facundobatista en gmail.com
Jue Mar 2 17:55:27 ART 2017


2017-03-01 19:14 GMT-03:00 Marcos Dione <mdione en grulic.org.ar>:

>     tengo un problemita que no s'e c'omo solucionar. tengo un sistema que
> tiene N workers y un masteri, implementados con multiprocessing. no puedo
> usar mltithreading porque una de las libs que uso (mapnik) no lo soporta.
> el master mete trabajos para hacer en una cola, los workers sacan
> trabajos y laburan, todo muy simple. pero no.
>
>     un worker, cuando termina, puede generar entre 0 y 4 trabajos mas.
> hay una condicion de corte que hace que en un momento determinado los
> workers siempre devuelven 0 trabajos, asi que eso no es problema. la
> complicacion viene cuando es mas eficiente hacer uno de estos nuevos
> trabajos inmediatamente que hacer uno de los que ya estan en la cola. o
> sea, necesito una pila, realmente, pero multiprocessing no tiene.
>
>     estaba pensando en hacer esto:
>
> * una cola de trabajos A de tamanyo N+1 master->workers.
> * una cola B de tamanyo 4*N+1 workers->master para los trabajos nuevos.
> * el master inicialmente mete un trabajo (esto es parte del problema).
> * luego se queda esperando trabajos nuevos por B, los saca y los mete en
> una pila, y de la pila saca y los mete en A. ya estoy viendo que esto
> parece estudpido, pero como A tiene un tamanyo limitado, no puedo meter
> cosas indefinidamente.
> * los workers sacan trabajos de A y eventualemnte meten nuevos en B.
> * notar que tanto A como B bloquean si estan vacias o llenas, asi que hay
> que teenr mucho ojo con esto.

No llego a entender.

Creo que porque no llego a "ver" qué complicación tenés con las colas.
¿Las implementás vos? ¿Cómo mete el master tareas? ¿cómo las consume
cada worker? ¿cómo te devuelve cada worker el resultado y/o nuevas
tareas?

Si vos tenés la cola implementada a gusto en el proceso del master,
¿no podés tener una LIFO y ya? Entonces, metés una tarea ahí, y las
nuevas tareas que van cayendo se consumen antes que las viejas...

Pero bueno, me parece que me falta entender parte del problema.

Slds.

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista


Más información sobre la lista de distribución pyar