Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Serialización de<br />
objetos<br />
Algunas veces tenemos la necesidad de guardar un objeto a disco para<br />
poder recuperarlo más tarde, o puede que nos sea necesario mandar un<br />
objeto a través de la red, a otro programa en <strong>Python</strong> ejecutándose en<br />
otra máquina.<br />
Al proceso de transformar el estado de un objeto en un formato que se<br />
pueda almacenar, recuperar y transportar se le conoce con el nombre de<br />
serialización o marshalling.<br />
En <strong>Python</strong> tenemos varios módulos que nos facilitan esta tarea, como<br />
marshal, pickle, cPickle y shelve.<br />
El módulo marshal es el más básico y el más primitivo de los tres, y<br />
es que, de hecho, su propósito principal y su razón de ser no es el de<br />
serializar objetos, sino trabajar con bytecode <strong>Python</strong> (archivos .pyc).<br />
marshal sólo permite serializar objetos simples (la mayoría de los tipos<br />
incluidos por defecto en <strong>Python</strong>), y no proporciona ningún tipo de<br />
mecanismo de seguridad ni comprobaciones frente a datos corruptos o<br />
mal formateados. Es más, el formato utilizado para guardar el bytecode<br />
(y por tanto el formato utilizado para guardar los objetos con marshal)<br />
puede cambiar entre versiones, por lo que no es adecuado para almacenar<br />
datos de larga duración.<br />
pickle, por su parte, permite serializar casi cualquier objeto (objetos de<br />
tipos definidos por el usuario, colecciones que contienen colecciones,<br />
etc) y cuenta con algunos mecanismos de seguridad básicos. Sin embargo,<br />
al ser más complejo que marshal, y, sobre todo, al estar escrito en<br />
113