¿Asyncore o Threading?
Pepe Aracil
pepe en diselpro.com
Vie Mayo 11 19:50:23 CEST 2007
Ok. Gracias Chema.
Para los que quieran saber como funcionan las "corutinas" en python 2.5,
he encontrado este enlace en castellano y con ejemplos.
http://elornitorrincoenmascarado.blogspot.com/2006/10/python-25-nuevas-posibilidades-de-los.html
Saludos.
Chema Cortes escribió:
> El 1/05/07, Pepe Aracil <pepe en diselpro.com> escribió:
>> Hola Gabriel.
>>
>> Voy ha hacer experimentos con asyncore y generadores, creo que
>> con estos últimos podré resolver los problemas que me plantea la
>> programación orientada a eventos (para este caso en particular).
>
> En realidad, el problema que planteas es típico para usar "corutinas".
> En python, a partir de la versión 2.5, se pueden implementar usando
> "generadores mejorados" (en otros lenguajes como ruby o lua es
> bastante habitual usar corutinas, así como también las tienes en
> "python stackless").
>
>> Por otro lado, si tengo una máquina con varias cpus/cores/hyperthreading,
>> creo que seria buena idea lanzar varios loops de asyncore (¿tantos
>> como cpus?)
>> en threads distintos y repartir la carga entre ellos.
>
> Como ya te han dicho, el GIL frena la ejecución multihilo. Yo usaría
> corutinas para chequear los sockets e iría lanzando threads/forks con
> las tareas por hacer (tal vez, mediante una cola de prioridades). Los
> threads van bien para ejecutar código externo (librerías dinámicas) o
> para acceso al hardware; los forks van mucho mejor cuando se usan
> varias cpus/cores, que es lo que quieres, aunque tendrás que usar
> algún tipo de señalización para sincronizar los forks.
>
> Si en lugar de python usas jython no tendrías el problema del GIL..
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es