[pyar] multiprocessing, FIFOs y mapas

Juan Esteban Carrique carrique en gmail.com
Jue Mar 2 18:31:48 ART 2017


"...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..."

Con que criterio definís que pueda ser mas eficiente? esto lo analisa el
master o el worker?

Parece un problema estándar de diagramación de tareas atómicas, donde el
master ademas es el diagramador... en ese caso tenes una LISTA de tareas,
que para los workers es una cola y agarran siempre la ultima pero que el
master puede modificar para reflejar el orden mas eficiente...

Tenes un problema con la librerias?

Salud!

2017-03-02 17:55 GMT-03:00 Facundo Batista <facundobatista en gmail.com>:

> 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
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170302/395ee3f0/attachment.html>


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