J'ai consulté la documentation sur les cornichons , mais je ne comprends pas en quoi il est utile.
Quels sont les cas d'utilisation courants de pickle?
J'ai consulté la documentation sur les cornichons , mais je ne comprends pas en quoi il est utile.
Quels sont les cas d'utilisation courants de pickle?
Certaines utilisations que j'ai rencontré:
1) l'enregistrement d'un programme de l'état des données sur le disque de sorte qu'il peut porter sur l'endroit où il l'avait laissé lors du redémarrage (persistance)
2) envoi de python de données sur une connexion TCP dans un multi-core ou un système distribué (marshalling)
3) le stockage des objets python dans une base de données
4) la conversion de l'arbitraire d'un objet python pour une chaîne de sorte qu'il peut être utilisé comme une clé de dictionnaire (par exemple, pour la mise en cache et memoization).
Il ya quelques problèmes avec le dernier - deux objets identiques peuvent être marinés et se traduire par des cordes, ou même le même objet marinés à deux reprises peuvent avoir des représentations différentes. C'est parce que le cornichon peut inclure une référence informations de comptage.
Minimes aller-retour exemple..
>>> import pickle
>>> a = Anon()
>>> a.foo = 'bar'
>>> pickled = pickle.dumps(a)
>>> unpickled = pickle.loads(pickled)
>>> unpickled.foo
'bar'
Edit: mais comme pour la question des exemples du monde réel de décapage, peut-être la plus avancée de l'utilisation de décapage (vous devez avoir à creuser assez profondément dans le source) est la ZODB: http://svn.zope.org/
Sinon, PyPI mentionne plusieurs: http://pypi.python.org/pypi?:action=search&term=pickle&submit=search
Personnellement, j'ai vu plusieurs exemples de marinés objets envoyés sur le réseau comme un outil facile à utiliser le réseau de protocole de transfert.
Je l'ai utilisé dans l'un de mes projets. Si l'application a été arrêtée pendant son fonctionnement (la tâche a été longue et a traité beaucoup de données), je devais sauvegarder la structure de données complète et la recharger après la réexécution de l'application. J'ai utilisé cPickle pour cela, car la vitesse était une chose cruciale et la taille des données très volumineuse.
Le décapage est absolument nécessaire pour le calcul distribué et parallèle.
Dire que tu voulais faire un parallèle map-reduce avec multiprocessing
(ou sur les nœuds de cluster avec pyina), alors vous devez vous assurer que la fonction que vous voulez avoir mappé à travers le parallèle ressources cornichon. Si ce n'est pas pickle, vous ne pouvez pas l'envoyer à d'autres ressources disponibles sur un autre processus, ordinateur, etc. Voir aussi ici pour un bon exemple.
Pour ce faire, j'utilise l'aneth, qui peut sérialiser presque rien en python. L'aneth a aussi quelques bons outils pour vous aider à comprendre ce qui est à l'origine de marinade à l'échec lorsque votre code ne fonctionne pas.
Et, oui, les gens utilisent de la cueillette à sauvegarder l'état d'un calcul, ou votre ipython session, ou quoi que ce soit.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.