Dilema que elejir Thread o asyncore ??

Francesc Alted falted en pytables.org
Jue Mayo 27 10:57:11 CEST 2004


A Dijous 27 Maig 2004 10:16, Chema Cortés va escriure:
> Muchas veces se ve el multihilo como una especie de multiproceso, pero la 
> realidad es que no lo es y que se trata de un proceso lineal en el que se van 
> repartiendo turnos de ejecución entre las hebras. Si buscas comunicaciones 
> síncronas no te van a servir ni multihilo ni el asyncore. Probablemente 
> tendrías que evolucionar hacia un sistema de tiempo real, algo como RT-linux 
> ó similar.

Como que no te sirven? Si que sirven, el tema es la escalabilidad (y la
complejidad, en el caso de asyncore, pero para eso esta Medusa
http://www.nightmare.com/medusa/medusa.html, o mejor, Twisted).

> En cuanto a los continuadores de stackless que comentaba Francesc, es algo
> demasiado sofisticado que bien se podría hacer con simples generadores. Hay

Hombre, no es exactamente sofisticado, simplemente incómodo pues hay que
parchear el intérprete de Python. Otra posibilidad son los microthreads,
(http://willware.net:8080/uthread.html) basados en stackless. Segun mis
pruebas, usando microthreads+stackless se pueden alcanzar escalabilidades de
100.000 o más threads en una sola CPU (!).

> una receta donde se cuenta cómo simular multihilos con generadores:
> 
> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/162764
> 
> Ésta receta tienes una colección de hilos simulados con tiempos diferentes de 
> activación. Seguro que lo puedes adaptar a tu problema.

Está bien, pero que diferencia existe respecto a una solución con Threads?
carga menos la máquina?

-- 
Francesc Alted




Más información sobre la lista de distribución Python-es