Re: Thread Pool
Pau Freixes <[email protected]> Tue, 22 Dec 2009 10:17:06 +0100
| Newsgroups | gmane.comp.python.general.castellano |
|---|---|
| Message-ID | <[email protected]> |
Por lo que puedo entender quiz=E1 el problema no sea de la gestion de threa=
ds,
si no de starvation + bloqueo, tal como explicas n funciones que luchan por
un mismo recurso bloqueado te estan dejando el Pool sin recursos provocando
que se produzca un efecto de bloqueo entre las funciones que estan
intentando utilizar el mismo recurso y el problema que otras funciones se
quedan sin la oportunidad de utilizar los threads.
Creo que la soluci=F3n no pasa por modificar tu gestion de threads si no po=
r
evitar esa posibilidad contextualizada en la funci=F3n y el uso no concurre=
nte
de ella.!!!
Una forma que se me ocurre a mi de hacer-lo es la siguiente
def foo(....)
if recurso.trylock() is False:
return SCHEDULE_AGAIN
....
Basicamente tendrias que volver a poner la funci=F3n dentro de la cola de
tareas pendientes, si la cola es del tipo FIFO no se producir=E1 starvation=
de
los otros procesos.
Venga saludos.
2009/12/21 Pepe Aracil <[email protected]>
> Hola.
>
> Hace unos meses escrib=ED esta implementaci=F3n de un pool de tareas:
> http://code.activestate.com/recipes/576910/
>
> Es un pool que crea nuevas threads a medida que se van necesitando.
>
> El caso es que cuando llamo muchas veces seguidas a una misma funci=F3n q=
ue
> no es
> reentrante (se protege con un lock), el pool se llena hasta "maxWorkers"
> impidiendo
> que otras funciones se ejecuten.
>
> La idea ser=EDa informar al pool de que una determinada funci=F3n no es
> reentrante para que
> la ponga en una cola a parte y se asegure de que solo se est=E1 ejecutan=
do
> un thread
> a la vez con dicha funci=F3n.
>
> =BFAlguna idea de como implementarlo de forma eficiente?
>
>
> Saludos.
>
>
> _______________________________________________
> Lista de correo Python-es http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
--=20
--pau
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes