[eside-ghost] Python y Java en servidores de aplicaciones
Pablo Orduña
pablo en ordunya.com
Mie Ene 23 01:05:00 CET 2008
Yeup!
El mar, 22-01-2008 a las 19:16 +0100, Alfredo Beaumont escribió:
> Ar, 2008eko Urtren 22a(e)an, Jon Valdés(e)k idatzi zuen:
> > Si solamente el thread que tenga el lock puede tocar objetos de python
> > (y todo es un objeto en python)... solamente un thread puede
> > ejecutarse en cada momento, convirtiendo cualquier sistema
> > multiprocesador en algo básicamente inutil :S
>
> Correcto. Si bien esto tampoco es tan grave como puede parecer a priori, ya
> que es difícil que necesites soporte multihilo dentro de las aplicaciones
> web, y siempre puedes lanzar varios procesos para atender múltiples
> peticiones.
Sí, justo Guido van Rossum decía [1]:
"""
If you have multiple CPUs and you want to use them all, fork off as many
processes as you have CPUs. (You write your web application to be easily
scalable, don't you? So if you can run several copies on different boxes
it should be trivial to run several copies on the same box as well.)
"""
El tema es que eso, si tu aplicación escala horizontalmente, no debería
afectarte (al menos "tanto"). Y si tu aplicación sólo escala
verticalmente, y necesitas mucha más potencia, y tienes más
procesadores... pues sí que es más lío :-) (claro que igual un lío
tienes en el hecho de tener una aplicación "que necesita mucha potencia"
y que no escala horizontalmente...).
> En cualquier caso, a estas alturas es un poco triste que siga
> arrastrando esta limitación,
yep
> no sé si tienen intención de resolverlo :?
Ni idea, pero después de sacar el tema en un par de FAQ de Python 3000
en Julio [1][2], sacó en Septiembre un post [3] en el que hablaba de
otros esfuerzos que había habido [4] hace años para quitar el GIL
(Global Interpreter Lock), pero que los resultados que presentaban eran
en plan:
sin GIL (con la solución que implementaron, en Python Speed Units):
1 procesador -> 0.6 PSU
2 procesadores -> 1.2 PSU
3 procesadores -> 1.6 PSU
con GIL:
1 procesador -> 0.95 PSU
2 procesadores -> 0.95 PSU
3 procesadores -> 0.95 PSU
y dados los problemas que daría el no tener GIL, pues optaron por
quitarlo. Entonces la idea de la que habla Guido van Rossum era en plan:
* "I also don't expect it [el GIL] to go away until someone *other than
me* goes through the effort of removing it, and showing that its removal
doesn't slow down single-threaded Python code."
* "I'd welcome a set of patches into Py3k *only if* the performance for
a single-threaded program (and for a multi-threaded but I/O-bound
program) does not decrease"
Entonces eso, *supongo* que los desarolladores de Python bastante tienen
con sacar Python 3 como para meterse con cambios así de fuertes en lo
que es algo propio la implementación del intérprete, aunque sí parezca
un tema bastante recurrente [5][6]...
[1] http://www.artima.com/weblogs/viewpost.jsp?thread=211200
[2] http://www.artima.com/weblogs/viewpost.jsp?thread=211430
[3] http://www.artima.com/weblogs/viewpost.jsp?thread=214235
[4] http://mail.python.org/pipermail/python-dev/2001-August/017099.html
[5]
http://mail.python.org/pipermail/python-list/2007-November/465373.html
[6]
http://mail.python.org/pipermail/python-dev/2007-September/thread.html#74545
> Saludos
--
Pablo
Más información sobre la lista de distribución eside-ghost