Verwenden Sie Pickle zum Speichern und Laden von Objekten in Python

Hafiz Muhammad Zohaib 21 Juni 2023
Verwenden Sie Pickle zum Speichern und Laden von Objekten in Python

Dieser Artikel zeigt, wie Sie Objekte in Python speichern und neu laden. Wir werden auch das Beizen und Entpicken mit Python verstehen. Außerdem werden wir die Vor- und Nachteile des Beizens sehen.

Einlegen und Ausbeizen

Die Serialisierung von Objekten ist der Weg, die Objekte in die Form von Bits umzuwandeln, damit wir den Zustand des Objekts auf der Festplatte speichern können. Obwohl uns viele Sprachen eine Möglichkeit der Objektserialisierung bieten, ist Python in allen flexibler.

In Python wird Objektserialisierung Pickling genannt, und Deserialisierung wird Unpickling genannt. Wir verwenden hauptsächlich Objekte in Python. Daher können wir fast alles serialisieren/deserialisieren. Es ist jedoch unvermeidlich, vorsichtig zu sein und den Zweck des Beizens zu kennen, bevor Sie es verwenden.

Bevor wir uns mit theoretischen Details befassen, lassen Sie uns das Beizen in Python mit dem Pickle-Modul demonstrieren.

Beizen in Python

Importieren Sie zum Beizen zunächst das Modul pickle.

import pickle

Wir können fast jedes Objekt in Python serialisieren. Nehmen wir zu Demonstrationszwecken ein Dictionary-Objekt.

bio_dict = {"name": "Zohaib", "age": 29, "profession": "Engineer"}

pickle enthält die .dump()-Funktion, um das Objekt zu serialisieren.

with open("bio_dict.pickle", "wb") as file_name:
    pickle.dump(bio_dict, file_name)

Im obigen Code haben wir eine Datei bio_dict.pickle mit Schreibrechten (d. h. wb) geöffnet und dann die Funktion .dump() verwendet, um das bio_dict-Wörterbuch in die Pickle-Datei einzupicken. Als Ergebnis haben wir das Wörterbuch erfolgreich in ein Bytestream-Format konvertiert.

Unpickling in Python

Wenn das eingelegte Objekt erneut verwendet werden muss, kann es deserialisiert werden. Dafür können wir die Funktion pickle.load() verwenden, wie im folgenden Code gezeigt:

with open("bio_dict.pickle", "rb") as file_name:
    unpickled_dict = pickle.load(file_name)

print("The retrieved dictionary is: ", unpickled_dict)

Wir haben die zuvor gespeicherte Datei (.pickle) geöffnet und dann die Funktion .load() verwendet, um das Objekt erneut zu erhalten. Der obige Code erzeugt die folgende Ausgabe.

The retrieved dictionary is:  {'name': 'Zohaib', 'age': 29, 'profession': 'Engineer'}

Mit dem folgenden Code können wir überprüfen, ob die eingelegten und nicht eingelegten Objekte gleich sind oder nicht.

assert bio_dict == unpickled_dict

Vor- und Nachteile des Beizens

Im Folgenden sind die Vorteile des Beizens in Python aufgeführt:

  1. Nahezu jedes Python-Objekt kann mit diesem pickle-Modul in Python serialisiert werden, im Gegensatz zu JSON und anderen Serialisierungstechniken.

  2. Wir können die eingelegten Gegenstände später verwenden. Zum Beispiel, wenn Sie eine große Berechnung durchgeführt und die Objekte eingelegt haben. Wenn Sie dann das nächste Mal eine neue Python-Sitzung starten, müssen Sie zuvor abgeschlossene große Berechnungen nicht erneut durchführen.

    Stattdessen entpicken Sie die eingelegten Objekte und verwenden sie in einer neuen Berechnung. Auf diese Weise können wir Zeit und Ressourcen sparen.

  3. Eingelegte Objekte können effizient von mehreren Threads gelesen werden, was zu schnellen parallelen Berechnungen führt.

Es gibt mehrere Folgen des Beizens. Sie sollten sich dessen bewusst sein, bevor Sie die Beize verwenden.

  1. Wir sollten Daten, die aus einer nicht zuverlässigen Quelle stammen, nicht entmarkieren. Es kann geänderte Daten oder willkürlich anfälligen Code enthalten, der schwerwiegende Sicherheitsprobleme verursachen kann.
  2. Anders als JSON-Dateien sind eingelegte Dateien nicht menschenlesbar.
  3. Die JSON-Datei kann von mehreren Sprachen verwendet und unterstützt werden. Andererseits werden Pickle-Dateien in Python möglicherweise nicht in vielen Sprachen unterstützt, und Sie benötigen möglicherweise relevante zwischengeschaltete Bibliotheken von Drittanbietern, die als Adapter dienen.

Was sonst noch eingelegt werden kann

Es ist ein wichtiger Punkt, der viel Zeit braucht, um ihn zu beschreiben. Aber kurz gesagt, Sie können viele Python-Dinge wie Funktionen, Pandas-Datenrahmen und viele andere einlegen.

Pickle ist auch ein äußerst hilfreiches Tool für maschinelles Lernen, da es Ihnen ermöglicht, Ihre Modelle zu bewahren, zeitaufwändige Umschulungen zu reduzieren und zuvor trainierte Modelle zu teilen, festzuschreiben und neu zu laden.

Sie können dieser Anleitung folgen, um Ihr Modell für maschinelles Lernen mit der Gurke zu speichern.

Verwandter Artikel - Python Pickle