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

Alejandro Santos listas en alejolp.com
Sab Abr 5 20:17:16 ART 2014


2014-04-06 1:10 GMT+02:00 Alejandro Santos <listas en alejolp.com>:
> 2014-04-06 0:52 GMT+02:00 Alejandro Santos <listas en alejolp.com>:
>>
>> Estoy (casi) seguro que, en general, si tenes un límite de X tareas en
>> la Queue del Pool, cada tarea no puede re-encolar más de (X-1) nuevas
>> tareas al Pool, de lo contrario llegás a un deadlock (pero hoy me
>> duele mucho la cabeza y una segunda opinion no me vendría mal).
>>
>
> El caso que se rompe con un deadlock, en general, es cuando tenés que
> procesar un grafo con forma de arbol y llegás a procesar el nivel del
> árbol que tiene X nodos con al menos un hijo/adyacente cada uno.
>

(perdón, sigo)

Lo bueno de esto es que el deadlock lo podés detectar si contás la
cantidad de tareas del pool que están durmiendo esperando en la queue.
Si este contador==X, tenés un deadlock. Lo tricky es diferenciar
cuáles tareas son de la pool y cuáles no, porque el deadlock aparece
solo cuando tenés una espera circular, esto es, cuando una misma tarea
del pool es la que mastica y produce tareas.

Me arriesgo a decir que esta feature de ponerle un tamaño máximo al
Queue del Pool está intencionalmente excluida por justamente esta
razón, pero es mi opinión.


-- 
Alejandro Santos


More information about the pyar mailing list