28.06.2017 Views

Python para todos

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Python</strong> <strong>para</strong> <strong>todos</strong><br />

<strong>Python</strong> en lugar de en C, como marshal, también es mucho más lento.<br />

La solución, si la velocidad de la serialización es importante <strong>para</strong> nuestra<br />

aplicación, es utilizar cPickle, que no es más que es una implementación<br />

en C de pickle. cPickle es hasta 1000 veces más rápido que<br />

pickle, y prácticamente igual de rápido que marshal.<br />

Si intentamos importar cPickle y se produce un error por algún motivo,<br />

se lanzará una excepción de tipo ImportError. Para utilizar cPickle<br />

si está disponible y pickle en caso contrario, podríamos usar un código<br />

similar al siguiente:<br />

try:<br />

import cPickle as pickle<br />

except ImportError:<br />

import pickle<br />

as en un import sirve <strong>para</strong> importar el elemento seleccionado utilizando<br />

otro nombre indicado, en lugar de su nombre.<br />

La forma más sencilla de serializar un objeto usando pickle es mediante<br />

una llamada a la función dump pasando como argumento el<br />

objeto a serializar y un objeto archivo en el que guardarlo (o cualquier<br />

otro tipo de objeto similar a un archivo, siempre que ofrezca mé<strong>todos</strong><br />

read, realine y write).<br />

try:<br />

import cPickle as pickle<br />

except ImportError:<br />

import pickle<br />

fichero = file(“datos.dat”, “w”)<br />

animales = [“piton”, “mono”, “camello”]<br />

pickle.dump(animales, fichero)<br />

fichero.close()<br />

La función dump también tiene un parámetro opcional protocol que<br />

indica el protocolo a utilizar al guardar. Por defecto su valor es 0, que<br />

utiliza formato texto y es el menos eficiente. El protocolo 1 es más<br />

eficiente que el 0, pero menos que el 2. Tanto el protocolo 1 como el 2<br />

utilizan un formato binario <strong>para</strong> guardar los datos.<br />

114

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!