Ich wollte nur Pythons Pickle-Modul verstehen

What's Pickle Dies image.jpeg

Wow lecker ~ Abgesehen von der Unschärfe stammt der Name von Pickles, einem Python-Modul, mit dem Sie den Status eines Objekts durch Serialisierung speichern können.

Ich habe in letzter Zeit und oft Deep Learning studiert

train_list = load_image_list(args.train)
val_list = load_image_list(args.val)
mean_image = pickle.load(open(args.mean, 'rb'))

Ich stoße oft auf Codes wie. Ich dachte: "Was ist Gurke?", Also werde ich zusammenfassen, was ich recherchiert habe.

Bitte weisen Sie darauf hin, ob es eine Beschreibung gibt, die Sie interessiert, da Sie mit der Programmierung im Allgemeinen nicht vertraut sind.

Was ist Beizen und Nichtbeizen (*) von Objekten?

Das meiste davon ist in der Dokumentation geschrieben.

http://docs.python.jp/2/library/pickle.html http://docs.python.jp/3/library/pickle.html

Programme arbeiten naturgemäß im Speicher und werden nach Beendigung ihrer Rolle aus dem Speicher entfernt. Das Objekt wird auch vom GC gelöscht, wenn es seine Rolle beendet hat, oder es verschwindet, wenn das Programm beendet ist.

Das Pickle-Modul bietet die Möglichkeit, das erstellte Objekt auch nach Beendigung des Programms zu speichern.

Sie können das Objekt speichern, indem Sie es in eine Byte-Zeichenfolge konvertieren und in eine Datei schreiben.

Ausführungsbeispiel

Schreiben Sie eine einfache Klasse.

Singer.py


class Singer(object):
    def __init__(self, lylics):
        self.lylics = lylics
    def sing(self):
        print(self.lylics)

Wenn diese Klasse instanziiert wird

main.py


from singer import Singer

singer = Singer('Shanranran')
singer.sing()
$ main.py
$ 'Shanranran'

Und so weiter singt es die Texte, die an den Konstrukteur weitergegeben wurden.

Natürlich vergisst Singer die Texte, wenn der Lauf beendet ist.

Verwenden Sie also anstelle der Textkarte Pickle, um den Status des Objekts zu speichern.

dump.py


import pickle
from singer import Singer

singer = Singer('Shanranran')

with open('singer.pickle', 'wb') as f:
    pickle.dump(singer, f)

Indem Sie den Status des Singer-Objekts in eine Binärdatei mit dem Namen Singer.pickle umwandeln, können Sie den Status des Objekts auch nach Abschluss von dump.py speichern. Das ist Pickle.

Ich benutze die Lademethode, um ein Objekt nicht zu beizen.

load.py


import pickle

with open('singer.pickle', 'rb') as f:
    singer = pickle.load(f)

singer.sing()
$ python load.py
$ Shanranran

Es wurde bestätigt, dass der Status des Singer-Objekts bei der Ausführung von dump.py gespeichert wurde.

abschließend

Ich habe kurz über das Pickle-Modul geschrieben, aber dies ist erst der Anfang, und es gibt noch mehr Dinge zu beachten, wenn Sie es ernsthaft verwenden. Ich lerne mich selbst, also schreibe ich es, wenn ich es wieder nachschlage.

Referenz

12.1. Pickle - Serialisierung von Python-Objekten http://docs.python.jp/3/library/pickle.html

11.1. Pickle - Serialisierung von Python-Objekten http://docs.python.jp/2/library/pickle.html

Python: Ein Objekt auswählen http://blog.amedama.jp/entry/2015/12/05/132520

Recommended Posts

Ich wollte nur Pythons Pickle-Modul verstehen
Hash-Kette wollte ich vermeiden (2)
Ich möchte systemd grob verstehen
Verwendung des Python-Protokollierungsmoduls
Ich wollte cGAN zu ACGAN weiterentwickeln
Hash-Kette wollte ich vermeiden (1)
Ich wollte vorsichtig mit dem Verhalten der Standardargumente von Python sein
Ich wollte ABC159 mit Python lösen
Ich wollte ABC172 mit Python lösen
Ich wollte unbedingt mit Selen kopieren
DQN mit TensorFlow implementiert (ich wollte ...)
Ich wollte den NOMURA Contest 2020 mit Python lösen
i-Town Page Scraping: Ich wollte den Platz von Wise-Kun einnehmen
Ich wollte mit der Bezier-Kurve spielen
Ich wollte Python 3.4.3 mit Homebrew + pyenv installieren
Ich habe versucht, Pythons GUI-Bibliothek "PySimple GUI" zu berühren.
Ich wollte nur die Daten des gewünschten Datums und der gewünschten Uhrzeit mit Django extrahieren
Ich möchte UMAP (Engineering) stärker verstehen als t-SNE
Ich wollte auch Typhinweise mit numpy überprüfen
Ich habe ein Python-Modul erstellt, um Kommentare zu übersetzen
Ich wollte die Python-Bibliothek von MATLAB verwenden
Ich möchte die Grundlagen von Bokeh vollständig verstehen
[Fehler] Ich wollte Sätze mit Flairs TextRegressor generieren
Eine Geschichte über den Wunsch, die Django-Administrationsseite ein wenig zu ändern