Re: Thread Pool

Raúl Alexis Betancor Santana <[email protected]> Mon, 21 Dec 2009 18:15:48 +0000
Newsgroups gmane.comp.python.general.castellano
Organization Dimensión Virtual S.L.
Message-ID <[email protected]>
--===============1956558782==
Content-Type: text/plain;
  charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

On Monday 21 December 2009 17:24:36 lasizoillo wrote:
> El d=EDa 21 de diciembre de 2009 15:32, Pepe Aracil <[email protected]>=20
escribi=F3:
> > 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=
 que
> > 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 =A0y se asegure de que solo se est=E1 ejec=
utando
> > un thread
> > a la vez con dicha funci=F3n.
> >
> > =BFAlguna idea de como implementarlo de forma eficiente?
>
> Creo que se me est=E1 escapando algo, porque se me ocurre como soluci=F3n
> algo muy simple:
>  - Creas un pool para las funciones reentrantes con el maxWorkers > 1
>  - Creas otro pool para las funciones no reentrantes con el maxWorkers =
=3D 1

Si no he entendido mal el c=F3digo ... lo que se te escapa es que la clase =
es un=20
Singleton y por lo tanto solo puede haber una instancia de la misma.

Pero vamos ... como soluci=F3n, tambi=E9n prodr=EDas hacer que internamente=
 la clase=20
usase dos Queue's o dos Pool's y que si cuando a=F1ades el worker le pasas =
el=20
par=E1metro de "nonReentrant", pues que la mande al pool de las no reentran=
tes.

Saludos
=2D-=20
Ra=FAl Alexis Betancor Santana
Dimensi=F3n Virtual

--===============1956558782==
Content-Type: text/plain; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

_______________________________________________
Lista de correo Python-es =

http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
--===============1956558782==--