Persistencia para una variable

Germán Carrera gcarrera en cnb.uam.es
Lun Feb 26 15:30:54 CET 2007


Hola ,
Perdón, sí se trata de una lista y no necesito persistencia más allá de 
la vida de la aplicación.
La función dentro de la clase es llamada desde fuera para realizar un 
número de iteraciones determinado, en cada iteración generaba un tarball 
con unas imágenes, ahora quiero que sólo sea generado durante la primera 
iteración (por eso if job_data['iter']==1) y aun así guardar el estado 
de plan y poder usarla en el resto de las iteraciones.

Mi solución estaba en en el método

 __init__  añadir
self.plan=[]

Y substituir en el caso del código de abajo.
pero en este caso la lista self.plan pierde su valor en cada una de las 
iteraciones.

 def plan_MLalign2D(self, job_data, chunkNum):
....
....
....
       if job_data['iter']==1
               for i in range(1,job_data['Nsplit']+1):
                   subset_sel_file = 
"%(MLroot)s_subset_"%job_data+str(i)+".sel"
                   tarimg = 
os.path.join(job_data['img_tar_dir'],subset_sel_file+".tgz")
                   if not os.path.isfile(tarimg):
                       tar_images(subset_sel_file, img_topdir, tarimg )
                   task = [ 
FILE.read(subset_sel_file),Base64BinaryFile.read(tarimg),i ]
                   self.plan.append(task)
...
...

Gracias, Germán

Chema Cortes wrote:
> Germán Carrera escribió:
>> Necesito gruardar el estado de una variable, en este caso una tupla a 
>> través de varias iteraciones.
>>
>> El código este
>>            if job_data['iter']==1
>>                for i in range(1,job_data['Nsplit']+1):
>>                    subset_sel_file = 
>> "%(MLroot)s_subset_"%job_data+str(i)+".sel"
>>                    tarimg = 
>> os.path.join(job_data['img_tar_dir'],subset_sel_file+".tgz")
>>                    if not os.path.isfile(tarimg):
>>                        tar_images(subset_sel_file, img_topdir, tarimg )
>>                    task = [ 
>> FILE.read(subset_sel_file),Base64BinaryFile.read(tarimg),i ]
>>                    plan.append(task)
>>
>> Y la variable que quiero guardar es plan, lo he instantado hacer 
>> creando una var externa self.plan pero no ha habido manera. La 
>> cuestión quizá consistiría en hacer una copia por valor de la misma.
>
> No me queda nada claro lo que pides. 'plan' más que tupla parece ser 
> una lista, pero no veo dónde la declaras ni cómo. Haría falta que 
> especificaras si la persistencia la quieres durante la misma ejecución 
> del programa, con lo que estaríamos en un problema de alcances 
> ("scope") y clausuras, o si la persistencia la necesitas más allá de 
> la vida de la aplicación, con lo que sería un problema de recuperar 
> estados.
>
> Tampoco entiendo a qué te refieres por "variable externa" con 
> self.plan . ¿Acaso es parte de un método lo que estás creando?
>
>
>
>




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