[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