[pyar] Limitando size del input Queue de multiprocessing.Pool

Andres Riancho andres.riancho en gmail.com
Sab Abr 5 18:55:50 ART 2014


Hernan,

2014-04-05 18:09 GMT-03:00 Hernan Grecco <hernan.grecco en gmail.com>:
> Hola Andres,
>
>>     Durante una sesion de debugging/analisis de uso memoria me di
>> cuenta que por varias razones estaba encolando una gran cantidad de
>> tareas en un Pool (multiprocessing pool). Las mismas son eventualmente
>> son ejecutadas, pero durante algunos periodos de tiempo la Queue [0]
>> consumía una cantidad de memoria importante.
>>
>>     Entonces lo que se me ocurrió fue hacer un subclass de
>> multiprocessing.Pool , y limitar el tamaño del Queue de entrada, de
>> tal manera que los que quieran encolar nuevas tareas en el pool se
>> bloqueen en caso de que el mismo ya tenga 250 tareas esperando a ser
>> procesadas.
>
> Ya podes especificar un tamaño maximo a Multiprocessing Queue [0]

Ojo que no estoy haciendo eso eh! Se que se puede setear el tamaño de
un multiprocessing.Queue cualquiera, pero estoy cambiando el size
ESPECIFICO del que se usa como entrada de tareas para
multiprocessing.Pool

> Pero yo tengo otra pregunta. Pocas veces me encontré con un problema
> asi y la mayor parte de las veces lo pude solucionar cambiando la
> forma en la que organice las tareas. En general uso multiprocessing
> para hacer calculo distribuido. En estos casos tengo alguna funcion
> que calcula algo costoso o que analiza datos. En ambos casos el input
> (que es lo que pongo en multiprocessing Queue) es pequeño. Cuando
> tengo que pasar mucha data (por ejemplo una imagen o una tabla
> grande), generalmente paso el nombre del archivo y el otro proceso se
> encarga de leerlo y no hay problemas de memoria.
>
> Como es tu aplicación?

En mi caso lo que estoy viendo son muchos tuples con los args de
tamaño pequeño. Mas que nada los args representan un HTTP request:
URL, headers, post-data, etc.

Se que no es lo ideal utilizar multiprocessing.Pool para esto, tengo
planes para migrar a gevent (o similar) pero todavia no tengo tiempo
:(

> saludos,
>
> Hernán
>
> [0] https://docs.python.org/2.7/library/multiprocessing.html#multiprocessing.Queue
> _______________________________________________
> 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



-- 
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3


More information about the pyar mailing list