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