Pickle

Überblick

Unterstützung von Datenstrukturen

+-

Pickle wird zum Speichern von Python-Objektstrukturen wie list oder dict in einem Byte-Stream verwendet. Im Gegensatz zu marshal werden bereits serialisierte Objekte getrackt, sodass spätere Verweise nicht erneut serialisiertt werden. Auch rekursive Objekte sind möglich.

Standardisierung

++

Pickle ist definiert in den Python Enhancement Proposals 307, 3154 und 574.

Schema IDL

--

Nein

Sprachunterstützung

--

Python-spezifisch

Menschliche Lesbarkeit

+-

Pickle ist ein binäres Serialisierungsformat, das jedoch einfach mit Python gelesen werden kann.

Geschwindigkeit

+-

Das Pickle-Format kann von Python meist schnell serialisiert und deserialisiert werden; siehe jedoch Don’t pickle your data.

Dateigröße

++

Kompaktes Binärformat, das jedoch noch weiter komprimiert werden kann, s. Data Compression and Archiving.

Beispiel

  1. Schreiben

    import pickle
    
    # An arbitrary collection of objects supported by pickle.
    data = {
        'a': [1, 2.0, 3, 4+6j],
        'b': ("character string", b"byte string"),
        'c': {None, True, False}
    }
    
    with open('data.pickle', 'wb') as f:
        # Pickle the 'data' dictionary using the highest protocol available.
        pickle.dump(data, f, pickle.HIGHEST_PROTOCOL)
    
  2. Lesen

    import pickle
    
    with open('data.pickle', 'rb') as f:
        # The protocol version used is detected automatically, so we do not
        # have to specify it.
        data = pickle.load(f)
    

Siehe auch

pickle – Python object serialization

Dokumentation des pickle-Moduls

shelve – Python object persistence

Indizierte Datenbanken von pickle-Objekten

Uwe Korn: The implications of pickling ML models

Alternativen zu pickle für ML-Modelle

Ned Batchelder: Pickle’s nine flaws

Nachteile von pickle und Alternativen