Use Pickle para guardar y cargar objetos en Python
Este artículo demuestra cómo guardar y recargar objetos en Python. También entenderemos el decapado y decapado usando Python. Además, veremos los pros y los contras del decapado.
Decapado y decapado
La serialización de objetos es la forma de convertir los objetos en forma de bits para que podamos guardar el estado del objeto en el disco duro. Aunque muchos lenguajes nos brindan una forma de serialización de objetos, Python es más flexible en todos ellos.
En Python, la serialización de objetos se denomina decapado y la deserialización se denomina decapado. Principalmente usamos objetos en Python. Por lo tanto, podemos serializar/des-serializar casi todo. Sin embargo, es inevitable tener cuidado y debe conocer el propósito del decapado antes de usarlo.
Antes de saltar a los detalles teóricos, demostremos el decapado en Python usando el módulo Pickle.
Decapado en Python
Para el decapado, primero importa el módulo pickle
.
import pickle
Podemos serializar casi cualquier objeto en Python. Tomemos un objeto de diccionario con fines de demostración.
bio_dict = {"name": "Zohaib", "age": 29, "profession": "Engineer"}
pickle
contiene la función .dump()
para serializar el objeto.
with open("bio_dict.pickle", "wb") as file_name:
pickle.dump(bio_dict, file_name)
En el código anterior, abrimos un archivo bio_dict.pickle
con permiso de escritura (es decir, wb
) y luego usamos la función .dump()
para encurtir el diccionario bio_dict
en el archivo pickle. Como resultado, convertimos con éxito el diccionario a un formato de flujo de bytes.
Decapado en Python
Cuando el objeto decapado necesita ser usado nuevamente, puede ser deserializado. Para eso, podemos usar la función pickle.load()
como se muestra en el siguiente código:
with open("bio_dict.pickle", "rb") as file_name:
unpickled_dict = pickle.load(file_name)
print("The retrieved dictionary is: ", unpickled_dict)
Abrimos el archivo previamente guardado (.pickle
) y luego usamos la función .load()
para obtener el objeto nuevamente. El código anterior produce el siguiente resultado.
The retrieved dictionary is: {'name': 'Zohaib', 'age': 29, 'profession': 'Engineer'}
Podemos verificar si los objetos encurtidos y no encurtidos son iguales o no usando el siguiente código.
assert bio_dict == unpickled_dict
Ventajas y desventajas del decapado
Las siguientes son las ventajas de decapado en Python:
-
Casi cualquier objeto de Python se puede serializar con este módulo
pickle
en Python, a diferencia deJSON
y otras técnicas de serialización. -
Podemos usar los objetos en escabeche más tarde. Por ejemplo, si hizo un cálculo grande y decapado los objetos. Entonces, la próxima vez que inicie una nueva sesión de Python, no necesitará volver a realizar grandes cálculos previamente completados.
En su lugar, deshace los objetos decapados y los utiliza en un nuevo cálculo. De esta manera, podemos ahorrar tiempo y recursos.
-
Múltiples subprocesos pueden leer de manera eficiente los objetos en escabeche, lo que resulta en cálculos paralelos rápidos.
Las consecuencias del decapado son múltiples. Debe conocerlos antes de utilizar el decapado.
- No debemos descifrar los datos recopilados de una fuente no confiable. Puede contener datos alterados o algún código arbitrariamente vulnerable que puede causar serios problemas de seguridad.
- A diferencia de los archivos
JSON
, los archivos en escabeche no son legibles por humanos. - El archivo
JSON
se puede utilizar y admitir en varios idiomas. Por otro lado, es posible que los archivos pickle en Python no se admitan en muchos idiomas, y es posible que necesite bibliotecas intermediarias de terceros relevantes para que sirvan como adaptador.
¿Qué más se puede encurtir?
Es un punto importante que necesita mucho tiempo para ser descrito. Pero, en resumen, puede seleccionar muchas cosas de Python como funciones, marcos de datos Pandas
y muchos otros.
Pickle también es una herramienta muy útil para el aprendizaje automático, ya que le permite conservar sus modelos, reducir el tiempo de reentrenamiento y compartir, confirmar y recargar modelos previamente entrenados.
Puede seguir esta guía para almacenar su modelo de aprendizaje automático usando pickle.