Método de Python pickle para almacenar y leer grandes listas de datos y datos de diccionario

Permítanme presentarles el almacenamiento de Python Pickle y la lectura de grandes listas de datos y diccionarios.

Para listas y diccionarios con una cantidad relativamente grande de datos, se puede llamar procesándolos en paquetes de datos para reducir el tamaño del archivo.

#列表
  #存储
  list1 = [123,'xiaopingguo',54,[90,78]]
  list_file = open('list1.pickle','wb')
  pickle.dump(list1,list_file)
  list_file.close()
  
  #读取
  list_file = open('list1.pickle','rb')
  list2 = pickle.load(list_file)
  print(list2)
  
#字典
  #存储
  list3 = {
    
    '12': 123, '23': 'xiaopingguo', '34': 54, '45': [90, 78]}
  list3_file = open('list3.pickle', 'wb')
  pickle.dump(list3, list3_file)
  list3_file.close()
  # # 读取
  list3_file = open('list3.pickle', 'rb')
  list3 = pickle.load(list3_file)
  print(list3)
 
  print(list3['23']

ps: veamos Python usando pickle para almacenar big data

Estoy tratando con un dato recientemente, y hay una enorme variable intermedia tipo diccionario. Debido a que se usará durante mucho tiempo y con alta frecuencia en el futuro, considero guardarlo como datos en un formato .mat similar a matlab para una fácil lectura en cualquier momento en el futuro. .

Por supuesto, pienso en usar pickle para guardar datos, porque esta es la forma más común y sencilla de almacenar datos en el entorno de Python.
Hay muchas formas de almacenar datos en Python. La forma más común es usar el módulo pickle. Por supuesto, hay otras formas de guardarlos en json, txt y otros formatos. Como para

Otra forma de decir pandas, h5, etc. ~

Introducción al módulo de pepinillos

El módulo pickle implementa un protocolo binario para serializar y deserializar estructuras de objetos de Python. La operación de serialización "decapado" es el proceso de convertir la jerarquía de objetos de Python en una secuencia de bytes, y la operación de deserialización "desmarcado" es el proceso de convertir la secuencia de bytes de nuevo a la jerarquía de objetos.

Debo mencionar que pickle es exclusivo de Python, por lo que es posible que los programas que no sean de Python no puedan reconstruir objetos en escabeche. En mi trabajo, encontré un problema, es decir, el modelo de aprendizaje automático que entrené con sklearn y guardé con pickle, los colegas de ingeniería no pueden usar java para llamar a este modelo, un método temporal es tener un colega Lea el código fuente de pickle y use java para deserializarlo paso a paso. Lo admiro.

Habilidades de uso de pepinillos

Para el código más simple, las funciones dump () y load () son suficientes.

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import pickle
a = 1
# 保存
with open('data.pickle', 'wb') as f:
  pickle.dump(data, f)
# 读取
with open('data.pickle', 'rb') as f:
  b = pickle.load(f)

Pero si lee la documentación de pickle, encontrará que hay un parámetro llamado protocolo. El protocolo de parámetros representa el modo de serialización (protocolo pickle). El valor predeterminado es 0 en python2.X y 3 en python3.X. En resumen, diferentes versiones de Python corresponden a diferentes protocolos más altos, y cuanto mayor es el valor del protocolo, mayor es la versión del protocolo utilizada. como muestra la imagen,

Entonces, ¿cuál es el impacto de modificar el protocolo? Cuanto mayor sea el valor del protocolo, más rápida será la velocidad de volcado y más tipos de datos admitidos, menor será el espacio ocupado por los archivos guardados y algunas otras optimizaciones. Por ejemplo, en python3.4, la nueva versión 4 del protocolo admite Los grandes datos se serializan. Por lo tanto, si es posible, seleccione la versión de protocolo más alta como el valor del parámetro de protocolo, simplemente configúrelo protocol=pickle.HIGHEST_PROTOCOL.

Entonces, el código anterior se puede cambiar a:

import pickle
a = 1
# 保存
with open('data.pickle', 'wb') as f:
  pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL)
# 读取
with open('data.pickle', 'rb') as f:
  b = pickle.load(f)

Posiblemente, para datos pequeños, el impacto no será grande.

Pero cuando necesite serializar big data, recuerde este truco de pepinillos.

para resumir

Lo anterior es el método para almacenar y leer grandes listas de datos y diccionarios en Python Pickle introducido por el editor.

Supongo que te gusta

Origin blog.csdn.net/sinat_38682860/article/details/109312553
Recomendado
Clasificación