[Python-es] namespaces y variables globales

jordi torrents jtorrents en milnou.net
Mie Nov 3 18:29:56 CET 2010


Hola Arnau,

2010/11/3 Arnau Sanchez:
> Como norma general: variables locales = buenas, globales = malas. Sólo se usan
> variables globales en casos muy particulares, pero aquí sería sencillamente:

Quizá un poco de contexto a mi problema ayudará, porqué no estoy
seguro que mi problema sea un caso dónde se aplique la norma general.

Estoy haciendo pruebas de escalabilidad de un càlculo científico
(implementado en python) en un cluster utilizando la libreria
parallelpython [1]. Las pruebas tienen como objetivo determinar el
número de procesadores óptimo para el cálculo. Una vez determinado,
este número òptimo quedará "hardcodeado" en el código del cálculo y ya
no será necessario pasarle a la instáncia de la clase Server de
parallelpython el número de cpus a utilizar via línea de comandos. En
el desarrollo del cálculo hay múltiples funciones que utilizan la
instancia de la classe Server de parallelpython. Siguiendo tu consejo,
tendría que modificar todas éstas funciones añadiendo un argumento que
sería la instáncia de la clase pp.Server inicializada con el número de
cpus indicado en la línea de comandos.

Dado que sólo tengo que ejecutar los tests de escalabilidad una vez,
me gustaría ahorrarme modificar el código del cálculo, por eso pensaba
que sería una buena idea que la instáncia de pp.Server fuera accesible
desde el namespace global a todas las funciones que utilizan
paralelización. Cuando no tengo que pasar el número de cpus a la
instáncia de la clase Server via línea de comandos, consigo que esté
en el namespace global del programa simplemente instanciando la clase
fuera de la función main al principio del script.

Gracias i Salut!

 [1] http://www.parallelpython.com/


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