Méthode de pickle Python pour stocker et lire de grandes listes de données et des données de dictionnaire

Permettez-moi de vous présenter le stockage de pickle python et la lecture de grandes listes de données et de dictionnaires.

Pour les listes et les dictionnaires avec une quantité relativement importante de données, il peut être appelé en les traitant en paquets de données pour réduire la taille du fichier

#列表
  #存储
  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: Examinons python en utilisant pickle pour stocker du Big Data

Récemment, je traite une donnée, il y a une énorme variable intermédiaire de type dictionnaire, car elle sera utilisée pendant longtemps et à haute fréquence dans le futur, donc j'envisage de la sauvegarder sous forme de données de type matlab au format .mat pour une lecture facile à tout moment .

Bien sûr, je pense à utiliser pickle pour enregistrer des données, car c'est le moyen le plus courant et le plus simple de stocker des données dans l'environnement python.
Il existe de nombreuses façons de stocker des données en python. La méthode la plus courante consiste à utiliser le module pickle. Bien sûr, il existe d'autres méthodes, telles que l'enregistrement au format json, txt et d'autres formats. Pour ce qui est de

Une autre façon de dire pandas, h5, etc. ~

Introduction au module pickle

Le module pickle implémente un protocole binaire pour la sérialisation et la désérialisation des structures d'objets python. L'opération de sérialisation "pickling" est le processus de conversion de la hiérarchie d'objets Python en un flux d'octets, et l'opération de désérialisation "unpickling" est le processus de conversion du flux d'octets vers la hiérarchie d'objets.

Je dois mentionner que pickle est unique à python, donc les programmes non-python peuvent ne pas être en mesure de reconstruire des objets picklés. Dans mon travail, j'ai rencontré un problème, c'est-à-dire le modèle d'apprentissage automatique que j'ai formé avec sklearn, et enregistré avec pickle, les collègues ingénieurs ne peuvent pas utiliser java pour appeler ce modèle, une méthode temporaire consiste à avoir un collègue Lisez le code source de pickle et utilisez java pour le désérialiser étape par étape.

Compétences d'utilisation des cornichons

Pour le code le plus simple, les fonctions dump () et load () sont suffisantes.

'''
遇到问题没人解答?小编创建了一个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)

Mais si vous lisez la documentation de pickle, vous constaterez qu'il existe un paramètre appelé protocole. Le paramètre protocol représente le mode de sérialisation (protocole pickle). La valeur par défaut est 0 dans python2.X et 3 dans python3.X. En bref, différentes versions de python correspondent à différents protocoles les plus élevés, et plus la valeur du protocole est élevée, plus la version du protocole utilisée est élevée. comme le montre l'image,

Alors, quel est l'impact de la modification du protocole? Plus la valeur du protocole est élevée, plus la vitesse de vidage est rapide et plus il y a de types de données pris en charge, plus l'espace occupé par les fichiers enregistrés et certaines autres optimisations est petit. Par exemple, en python3.4, la nouvelle version de protocole 4 prend en charge Le Big Data est sérialisé. Par conséquent, si possible, sélectionnez la version de protocole la plus élevée comme valeur du paramètre de protocole, définissez-la simplement protocol=pickle.HIGHEST_PROTOCOL.

Ensuite, le code ci-dessus peut être changé en:

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)

Peut-être que pour les petites données, l'impact ne sera pas grand.

Mais lorsque vous avez besoin de sérialiser des données volumineuses, souvenez-vous de cette astuce.

Pour résumer

Ce qui précède est la méthode de stockage et de lecture de grandes listes de données et de dictionnaires en python pickle introduite par l'éditeur.

Je suppose que tu aimes

Origine blog.csdn.net/sinat_38682860/article/details/109312553
conseillé
Classement