[Python-es] Python y Procesadores
Chema Cortes
py en ch3m4.org
Lun Oct 29 02:25:55 CET 2007
El Sunday 28 October 2007 12:33:17 Javier Garcia escribió:
> Joder tio !! (con perdón), me ha quedado todo clarísimo, muchisimas
> gracias.
>
> Ahora entiendo muchas cosas. ( todo suposiciones posiblemente
> infundadas, soy un pajillero mental no puedo evitarlo )
>
> Supongo que parallelPython funciona ejecutando tantos intérpretes como
> workers le indiques, entiendo que multiplica el contexto del script y
> utiliza forks a todos esos procesos para recoger la información que
> generan. Curioso, curioso.....La cantidad de memoria utilizada, asumo,
> que se multiplica por el numero de workers...
>
> ¿Se podría separar el contexto ( entiendo por contexto definición de
> variables,funciones,objetos..etc) de la ejecución ( entiendo por
> ejecución la utilización de esas definiciones) ?
En realidad, por contexto de ejecución me refería a la ejecución a muy bajo
nivel, a la salvaguarda de los registros del procesador y del cambio de la
paginación de memoria para reubicarlos en otro procesador. Las CPUs suelen
llevar interrupciones para realizar estos cambios de contexto.
Sobre lo que preguntas, es una cuestión que nunca he oído que se haya
experimentado lo suficiente. Siempre he pensado que python puede adaptarse
perfectamente a una programación no-lineal, o sea, en vez de una secuencia de
sentencias (programación imperativa) un programa de python podría moverse a
través de una colección de objetos que cambian dinámicamente, usando la
introspección para que sean los objetos quienes digan sus atributos al
programa y no al revés.
> ¿ alguna referencia en la web interesante y no demasiado abstracta a
> cambiar la forma en la que python ejecuta scripts, es decir, convertir
> la ejecución lineal de un script en python en no-lineal, no sé si me
> explico, que las definiciones (contexto) se puedan cambiar en tiempo
> de ejecución y el resultado (ejecución) cambia ? ¿live python? aunque
> lo del live python no me convence mucho...
No conozco ninguna referencia, con la excepción que te dije --que figura en
una discursión del python3k-- cuando intentaron quitar el GIL para python3k y
empeoró mucho el rendimiento. Ello me hace pensar que, tal vez, python no
resulte apropiado para "paralelizarlo" de esta manera.
Hay otros lenguajes que sí que podrían funcionar mejor. Pienso, sobre todo, en
los que implementan "corutinas", que no deja de ser un cambio de contexto
preemptivo (eg: ruby ó lua)
Hace mucho tiempo hablamos de estas cosas en la lista ("GIL e hyperthreading")
y nos preguntábamos cómo eliminar estas limitaciones. Con la nueva
reordenación que se ha producido en los archivos de la lista puede que no los
localices en el google, así que te dejo los enlaces directos:
http://listas.aditel.org/archivos/python-es/2004-March/004250.html
http://listas.aditel.org/archivos/python-es/2004-March/004254.html
Concretamente, en este último mensaje otro colistero, Francesç Alted, hablaba
de algunos esfuerzos para conseguir auténtico paralelismo con python.
Más información sobre la lista de distribución Python-es