2010-07-21 7 views
1

J'ai un module qui prend en charge la création d'objets géographiques en utilisant une interface standard de l'entreprise. Une fois ces objets créés, la méthode update_db() est appelée et tous les objets sont mis à jour dans une base de données.Liste en cache Python

Il est important que tous les objets soient insérés dans une session, afin de conserver les compteurs et les statistiques avant de mettre à jour une base de données de production.

Le problème est qu'il y a parfois trop d'objets et que la mémoire est pleine.

Y at-il un moyen de créer une liste mise en cache en Python, afin de gérer les listes qui ne rentre pas dans la mémoire?

Ma pensée générale était:

class CachedList(object): 
    def __init__(self, max_memory_size, directory) 
    def get_item(index) 
    def set_item(index) 
    def del_item(index) 
    def append(item) 

Une liste ordinaire sera créée lors de l'initialisation. Lorsque la taille de la liste dépasse max_memory_size, les éléments de la liste sont décapés et stockés dans un fichier au directory. get_item(), set_item() et del_item() gérerait les données stockées dans la mémoire, ou «swap» à partir du disque pour y accéder.

  1. Est-ce une bonne conception? Y a-t-il des alternatives standards?
  2. Comment puis-je forcer la récupération de place après pickle -en partie de la liste?

Merci,

Adam

Répondre

3

Utilisez shelve. Vos clés sont les indices de votre liste.

+0

Précisément, exactement, définitivement ce dont j'ai besoin. J'aurais donné plus de votes up si je pouvais. –