¿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