Maison >développement back-end >Tutoriel Python >Comment conserver efficacement des objets en Python à l'aide du module Pickle ?

Comment conserver efficacement des objets en Python à l'aide du module Pickle ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-11 06:21:11724parcourir

How to Effectively Persist Objects in Python Using the Pickle Module?

Comment conserver des objets en Python : un guide complet

Lorsque vous travaillez avec des objets en Python, il devient souvent nécessaire de sauvegarder leur état afin de pouvoir les utiliser ultérieurement. ou partagés entre différentes applications. Ce processus est communément appelé persistance des données.

Utilisation du module Pickle

La bibliothèque standard Python fournit un outil puissant pour la persistance d'objets appelé module pickle. Il vous permet de sérialiser des objets, en les convertissant efficacement en un flux d'octets pouvant être écrit dans un fichier ou transmis sur un réseau. Voici un exemple illustrant son utilisation :

import pickle

# Create a Company object
company1 = Company('banana', 40)

# Open a file for writing
with open('company_data.pkl', 'wb') as outp:
    # Serialize the object and store it in the file
    pickle.dump(company1, outp, pickle.HIGHEST_PROTOCOL)

# Open a file for reading
with open('company_data.pkl', 'rb') as inp:
    # Deserialize the object and load it into memory
    company1 = pickle.load(inp)

# Retrieve and print the object's attributes
print(company1.name)  # 'banana'
print(company1.value)  # 40

Utilisation d'une fonction utilitaire personnalisée

Vous pouvez également définir une fonction utilitaire simple pour gérer le processus de sérialisation :

def save_object(obj, filename):
    with open(filename, 'wb') as outp:
        pickle.dump(obj, outp, pickle.HIGHEST_PROTOCOL)

# Usage
save_object(company1, 'company1.pkl')

Utilisations avancées

cPickle (ou _pickle) vs. pickle :

Pour des performances plus rapides, pensez à utiliser le module cPickle, qui est une implémentation C du module pickle. La différence de performances est marginale, mais la version C est nettement plus rapide. Dans Python 3, cPickle a été renommé _pickle.

Formats de flux de données (protocoles) :

pickle prend en charge plusieurs formats de flux de données appelés protocoles. Le protocole le plus élevé disponible dépend de la version de Python utilisée, et dans Python 3.8.1, la version 4 du protocole est utilisée par défaut.

Objets multiples :

Un cornichon Le fichier peut contenir plusieurs objets marinés. Pour stocker plusieurs objets, ils peuvent être placés dans un conteneur comme une liste, un tuple ou un dict, puis sérialisés dans un seul fichier.

Chargeurs personnalisés :

Si vous ne savez pas combien d'objets sont stockés dans un fichier pickle, vous pouvez utiliser une fonction de chargement personnalisée comme celle présentée ci-dessous pour les parcourir et les charger tous :

def pickle_loader(filename):
    with open(filename, "rb") as f:
        while True:
            try:
                yield pickle.load(f)
            except EOFError:
                break

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn