Pickle dump énorme fichier sans erreur de mémoire

J'ai un programme où j'ai essentiellement ajuster la probabilité de certains événements basés sur ce qui est déjà connu. Mon fichier de données est déjà enregistré comme un cornichon Dictionnaire de l'objet à Dictionary.txt. Le problème, c'est qu'à chaque fois que je lance le programme, il tire dans le Dictionary.txt, le transforme en un objet dictionary, fait qu'il est modifie et remplace Dictionary.txt. C'est assez gourmande en mémoire que l'Dictionary.txt est de 123 MO. Quand je dump je suis le MemoryError, tout semble parfait quand je le tire..

  • Est-il mieux (plus efficace) façon de faire les modifications? (Peut-être w/o avoir à remplacer la totalité du fichier à chaque fois)
  • Est-il un moyen que je peux invoquer la collecte des ordures (par gc module)? (J'ai déjà l'auto-activé par gc.enable())
  • Je sais qu'en plus de readlines (), vous pouvez lire ligne par ligne. Est-il un moyen de modifier le dictionnaire de manière incrémentielle, ligne par ligne, quand j'ai déjà bien rempli Dictionnaire de Fichier de l'objet dans le programme.
  • D'autres solutions?

Je vous remercie pour votre temps.

Il y a un peu de résistance à la compression et à d'autres bibliothèques. Personnellement, j'aime l'aneth et H5Py pour les objets de grande taille. Si vous utilisez scikit apprendre et à utiliser un modèle de base sur le dictionnaire, peut-être que vous pourriez utiliser joblib (seulement vraiment pour ces modèles).

OriginalL'auteur user2543682 | 2013-07-07