Bei der Arbeit mit Objekten in Python ist es oft notwendig, ihren Zustand zu speichern, damit sie später verwendet werden können oder über verschiedene Anwendungen hinweg geteilt werden. Dieser Vorgang wird allgemein als Datenpersistenz bezeichnet.
Die Python-Standardbibliothek bietet ein leistungsstarkes Tool zum Persistieren von Objekten, das sogenannte Pickle-Modul. Es ermöglicht Ihnen, Objekte zu serialisieren und sie effektiv in einen Bytestrom umzuwandeln, der in eine Datei geschrieben oder über ein Netzwerk übertragen werden kann. Hier ist ein Beispiel, das seine Verwendung demonstriert:
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
Sie können auch eine einfache Dienstprogrammfunktion definieren, um den Serialisierungsprozess zu verwalten:
def save_object(obj, filename): with open(filename, 'wb') as outp: pickle.dump(obj, outp, pickle.HIGHEST_PROTOCOL) # Usage save_object(company1, 'company1.pkl')
cPickle (oder _pickle) vs. pickle:
Für eine schnellere Leistung sollten Sie die Verwendung des cPickle-Moduls in Betracht ziehen, bei dem es sich um eine C-Implementierung des pickle-Moduls handelt. Der Leistungsunterschied ist marginal, die C-Version ist jedoch spürbar schneller. In Python 3 wurde cPickle in _pickle umbenannt.
Datenstromformate (Protokolle):
pickle unterstützt mehrere Datenstromformate, die als Protokolle bezeichnet werden. Das höchste verfügbare Protokoll hängt von der verwendeten Python-Version ab, und in Python 3.8.1 wird standardmäßig Protokollversion 4 verwendet.
Mehrere Objekte:
Eine Gurke Die Datei kann mehrere eingelegte Objekte enthalten. Um mehrere Objekte zu speichern, können diese in einem Container wie einer Liste, einem Tupel oder einem Diktat abgelegt und dann in eine einzige Datei serialisiert werden.
Benutzerdefinierte Loader:
If Wenn Sie nicht wissen, wie viele Objekte in einer Pickle-Datei gespeichert sind, können Sie eine benutzerdefinierte Ladefunktion wie die unten gezeigte verwenden, um sie zu durchlaufen und zu laden alle:
def pickle_loader(filename): with open(filename, "rb") as f: while True: try: yield pickle.load(f) except EOFError: break
Das obige ist der detaillierte Inhalt vonWie kann man Objekte in Python mithilfe des Pickle-Moduls effektiv beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!