pickle y unpickle de todas las variables locales

Jose Caballero jcaballero.hep en gmail.com
Jue Feb 5 03:15:10 CET 2009


2009/2/4 Chema Cortes <py en ch3m4.org>

> El Thursday 05 February 2009 01:09:01 Jose Caballero escribió:
> > >>> import pickle
> > >>> x=6
> > >>> y=8
> > >>> d = locals()
> > >>> serialized = pickle.dumps(d)
> >
> > Traceback (most recent call last):
> >   File "<stdin>", line 1, in <module>
> >   File
> >
> "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pic
> >kle.py", line 1366, in dumps
> >....
> >>   File
> >
> "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/cop
> >y_reg.py", line 69, in _reduce_ex
> > TypeError: can't pickle module objects
>
> Obviamente, no todo es "pickleable":
>
>
> http://docs.python.org/library/pickle.html#what-can-be-pickled-and-unpickled
>
>
> Tendrías que realizar un barrido del diccionario de variables, comprobando
> el
> tipo (con 'isinstance'), para distinguir las variables que se puedan pasar
> al
> pickle.
>
> De todas formas, dudo que ésta sea una buena idea. Debes controlar mejor
> los
> objetos que a serializar si no quieres acabar teniendo un entorno
> completamente corrompido e inestable.
>
> <http://listas.aditel.org/faqpyes>


Hola Chema,

gracias por tus comentarios. Tengo que mirarme con cuidado ese link.

Comento mi problema. Por razones de disegno, necesito ejecutar dos programas
diferentes. En un determinado momento T2 el segundo de ellos deberia poder
hacer una "copia" del contenido de todas las variables/objetos que el primer
programa tenia en el instante T1. Y no encuentro una manera sencilla de
hacerlo. Cualquier sugerencia es mas que bienvenida.


Jose
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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