Je voulais juste comprendre le module Pickle de Python

What's Pickle cette image.jpeg

Wow délicieux ~ Mis à part le flou, le nom vient de Pickles, un module Python qui vous permet de sauvegarder l'état d'un objet en le sérialisant.

J'ai étudié l'apprentissage profond récemment et souvent

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

Je rencontre souvent des codes comme. J'ai pensé, "Qu'est-ce que le cornichon?", Je vais donc résumer ce que j'ai recherché.

Veuillez indiquer s'il y a une description qui vous intéresse parce que vous n'êtes pas familier avec la programmation en général.

Qu'est-ce que le décapage et le non-décapage (*) d'objets?

La majeure partie est écrite dans la documentation.

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

De par sa nature même, les programmes fonctionnent en mémoire et sont supprimés de la mémoire lorsqu'ils ont terminé leur rôle. L'objet est également supprimé par le GC lorsqu'il termine son rôle, ou il disparaît lorsque le programme termine son exécution.

Le module Pickle offre la possibilité de sauvegarder l'objet créé même après la fin de l'exécution du programme.

La manière d'enregistrer est de convertir l'objet en une chaîne d'octets et de l'écrire dans un fichier.

Exemple d'exécution

Écrivez un cours simple.

Singer.py


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

Quand cette classe est instanciée

main.py


from singer import Singer

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

Et ainsi de suite, il chante les paroles transmises au constructeur.

Bien sûr, Singer oublie les paroles lorsque la course est terminée.

Ainsi, au lieu d'une carte de paroles, utilisez Pickle pour enregistrer l'état de l'objet.

dump.py


import pickle
from singer import Singer

singer = Singer('Shanranran')

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

En faisant de l'état de l'objet Singer un fichier binaire appelé singer.pickle, vous pouvez enregistrer l'état de l'objet même après la fin de dump.py. C'est Pickle.

J'utilise la méthode load pour rendre un objet non pickle,

load.py


import pickle

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

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

Il a été confirmé que l'état de l'objet Singer lors de l'exécution de dump.py était enregistré.

en conclusion

J'ai brièvement écrit sur le module Pickle, mais ce n'est que le début, et il y a encore plus de choses à prendre en compte lorsque vous l'utilisez sérieusement. J'étudie moi-même, donc je l'écrirai quand je le chercherai à nouveau.

référence

12.1. Pickle - Sérialisation d'objets Python http://docs.python.jp/3/library/pickle.html

11.1. Pickle - Sérialisation d'objets Python http://docs.python.jp/2/library/pickle.html

Python: Pickle un objet http://blog.amedama.jp/entry/2015/12/05/132520

Recommended Posts

Je voulais juste comprendre le module Pickle de Python
Chaîne de hachage que je voulais éviter (2)
Je veux comprendre à peu près systemd
Comment utiliser le module de journalisation de Python
Je voulais faire évoluer cGAN vers ACGAN
Chaîne de hachage que je voulais éviter (1)
Je voulais faire attention au comportement des arguments par défaut de Python
Je voulais résoudre ABC159 avec Python
Je voulais résoudre ABC172 avec Python
Je voulais vraiment copier avec du sélénium
Implémentation de DQN avec TensorFlow (je voulais ...)
Je voulais résoudre NOMURA Contest 2020 avec Python
Scraping de pages i-Town: je voulais prendre la place de Wise-kun
Je voulais jouer avec la courbe de Bézier
Je voulais installer Python 3.4.3 avec Homebrew + pyenv
J'ai essayé de toucher la bibliothèque GUI de Python "PySimple GUI"
Je voulais juste extraire les données de la date et de l'heure souhaitées avec Django
Je veux comprendre (l'ingénierie) UMAP plus fort que t-SNE
Je voulais aussi vérifier les indices de type avec numpy
J'ai créé un module Python pour traduire les commentaires
Je voulais utiliser la bibliothèque Python de MATLAB
Je veux bien comprendre les bases de Bokeh
[Échec] Je voulais générer des phrases en utilisant TextRegressor de Flair
Une histoire sur la volonté de modifier un peu le site d'administration de Django