J'ai parfois eu des programmes python qui prennent beaucoup de temps à courir et que je veux pouvoir sauver l'état de la CV et de reprendre plus tard. Est-ce que quelqu'un a un moyen intelligent de sauvegarder l'état toutes les x secondes ou lorsque le programme quitte? P>
4 Réponses :
Mettez toutes vos données "State" au même endroit et utilisez un Pickle . p>
Le module de cornichon implémente un algorithme fondamental, mais puissant de série et de désémarification d'une structure d'objet Python. "Pickling" est le processus dans lequel une hiérarchie d'objet Python est convertie en un flux d'octets, et "Unlickling" est l'opération inverse, dans laquelle un flux d'octets est converti en une hiérarchie d'objets. Le décapage (et le désactivation) est alternativement appelé «sérialisation», «Marshalling», 1 ou "Aplatissement", cependant, pour éviter toute confusion, les termes utilisés ici sont "décapage" et "désactivé". P> blockQuote>
Je n'ai pas eu la chance de l'essayer, mais cela ressemble exactement à ce dont j'ai besoin. Merci
Comment puis-je trouver toutes mes données "State"? Ce n'est pas une réponse directe à la question, je pense.
Il signifie rassembler toutes les données que vous vous souciez de / toutes les données dont vous auriez besoin pour redémarrer votre processus. Vous écrivez essentiellement votre propre sauvegarde personnalisée / chargée et utilise le cornichon pour prendre de la partie de sauvegarde / chargement de disque, de sorte que tous vos données "State" sont à vous, il n'y a pas de réponse générale. #mieux vaut tard que jamais
Si vous souhaitez tout sauvegarder, y compris l'espace de noms complet et la ligne de code exécutant actuellement pour être redémarré à tout moment, il n'y a pas de module de bibliothèque standard pour le faire. P>
Comme une autre affiche indiquée, le module de cornichon peut économiser à peu près tout dans un fichier, puis vous le charger, mais vous devrez concevoir spécifiquement votre programme autour du module de cornichon (c'est-à-dire en sauvegarder votre "état", y compris les variables, etc - dans une classe). P>
Si vous allez bien avec OOP, envisagez de créer une méthode pour chaque classe qui émise une version sérialisée (à l'aide de cornichons) pour déposer. Ajoutez ensuite une deuxième méthode pour charger dans l'occurrence les données et si le fichier mariné est là, vous appelez la méthode de chargement au lieu du traitement. J'utilise cette approche pour ml et cela éloigne vraiment mon flux de travail. p>
Dans l'approche de programmation traditionnelle, la manière évidente d'enregistrer un état de variables ou d'objets après que certains points d'exécution sont la sérialisation. p>
Donc, si vous souhaitez exécuter le programme après un lourde État déjà calculé, nous ne devons commencer que de la partie de désérialisation. p>
Ces étapes seront principalement nécessaires dans la plupart du temps dans la modélisation des sciences de la technologie des données où nous chargons un énorme CSV ou d'autres données et la calculer et nous ne voulons pas recompaliser chaque fois que nous exécutons un programme. P>
http://jupyter.org/ - un outil qui fait automatiquement cette sérialisation / désérialisation sans que vous ne faisiez aucun travail manuel. p>
Tout ce que vous avez à faire est d'exécuter une partie sélectionnée de votre code Python, disons la ligne 10-15, qui dépendent de lignes pervoyantes 1 à 9. Jupyter enregistre l'état de 1-9 pour vous. Explorez un tutoriel et essayez-le. p>