Bonjour à tous.
Bon la question du titre est assez vague mais je vais essayer de préciser un peu.
Le contexte est le suivant : j'ai un programme qui s'exécute, il commence par charger pleins de données depuis une base de donnée, fait des traitements relativement lourds et encore d'autres trucs.
Bref d'initialisation est assez longue, et relativement stabilisée, par contre la seconde partie du code est en développement et pour débugger je dois, à chaque exécution, passer par la phase d'initialisation qui est longue, ce qui ralentit considérablement le développement.
Je voudrais donc pouvoir mettre une sorte de breakpoint dans mon code qui sauvegarde toutes les variables et tous les objet à cet instant sur le disque dans un fichier dans le but de reprendre l'exécution à cet endroit mais après avoir modifier les sources.
si vous avez compris ce que je veux faire et que vous connaissez un solution je suis tout ouïe.
Merci d'avance.
# Pas facile
Posté par benoar . Évalué à 2.
Bref, il n'y a pas, je pense, de solution pas trop compliquée dans cette voie là.
Après, je pense que tu devrais plutôt d'abord essayer de réduire l'ensemble de données sur lesquelles tu bosses lors de la phase de développement : minimiser les données extraites de la base, trouver un mimimum pour tester. Une fois que t'as bien testé avec cet environnement réduit, tu peux retester de temps en temps avec l'environnement complet.
[^] # Re: Pas facile
Posté par Tony Ducrocq . Évalué à 1.
# Utiliser le prompt ?
Posté par hocwp (site web personnel) . Évalué à 1.
Peut-être peux tu découper ton programme en deux. Une partie qui fait l'initialisation que tu charge en premier.
Puis la partie que tu débogues dans un autre fichier que tu recharges depuis le prompt.
Une session donnerai un truc du genre :
$ python -i longue_initialisation.py
>>> execfile("la_partie_test.py")
...
>>> execfile("la_partie_test.py")
...
Sinon, il y a sûrement un moyen plus direct de faire quelque chose comme Slime [2] depuis un éditeur.
[1] http://common-lisp.net/project/cmucl/doc/cmu-user/extensions(...)
[2] http://common-lisp.net/project/slime/
[^] # Re: Utiliser le prompt ?
Posté par Tony Ducrocq . Évalué à 1.
# Pickle
Posté par Franck V . Évalué à 2.
pickle.dump(obj, file)
puis
pickle.load(file)
Si tu veux sauvegarder plusieurs objet d'un coup, le plus simple est de les stocker dans une table et de sérialiser la table.
Par contre il ne permet pas de sauvegarder n'importe quel type de données, en particulier je ne pense pas que les connexions vers des bases de données ou des fichiers ouverts puisse être restitués à l'identique.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.