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==--