Use Pickle para guardar y cargar objetos en Python

Hafiz Muhammad Zohaib 21 junio 2023
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:

  1. Casi cualquier objeto de Python se puede serializar con este módulo pickle en Python, a diferencia de JSON y otras técnicas de serialización.

  2. 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.

  3. 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.

  1. 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.
  2. A diferencia de los archivos JSON, los archivos en escabeche no son legibles por humanos.
  3. 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.

Artículo relacionado - Python Pickle