2010-01-14 3 views
3

Quelle est la méthode la plus efficace pour stocker un dictionnaire Python sur le disque? Les seules méthodes que je connais en ce moment sont le texte en clair et le module pickle.Méthode efficace pour stocker le dictionnaire Python sur le disque?

Editer: Désolé de ne pas être très clair. Par efficace, je voulais dire la vitesse d'exécution la plus rapide. Le dictionnaire contiendra des objets mutables qui contiendront des informations à analyser et à modifier.

+1

Cela dépend beaucoup de la façon dont vous voulez utiliser le dictionnaire. Avec votre question comme indiqué, il n'y a pas de bonne réponse. – Omnifarious

+0

La vitesse d'exécution la plus rapide comparée à quoi? Est-ce que vous réimplémentez une base de données dans un dictionnaire Python? Quelle est la taille du dictionnaire? SQLite ou BDB peut être plus rapide si le nombre d'entrées est suffisamment élevé. – jmucchiello

+0

Le nombre de clés ira dans les milliers. Un dictionnaire souffrirait-il sensiblement des performances par rapport à une base de données avec ce nombre de valeurs? – linkmaster03

Répondre

8

shelve est assez agréable et

ou this persistent dictionary recipe

pour une méthode pratique qui garde vos objets synchronisés avec le stockage, il y a le ORM SQLAlchemy pour python

si vous avez juste besoin d'un moyen de stocker valeurs de chaîne par une clé, theres les modules dbm.ndbm et dbm.gnu.

si vous avez besoin d'un hyper efficace, cache distribué de valeur clé, quelque chose comme memcached for python ...

+0

'shelve' est généralement tout ce dont vous aurez besoin, sauf si vous avez besoin d'une performance ultra rapide, auquel cas vous devriez utiliser une base de données réelle de toute façon. –

+0

Est-ce que shelve utilise cPickle lorsque cela est possible? – linkmaster03

+0

il utilise en effet cPickle si disponible, vous pouvez le remplacer en définissant shelve.Pickler ainsi – jspcal

2

JSON et YAML fonctionnent bien, aussi. Dépend de ce que vous entendez par «efficace»? Taille du fichier? Temps requis? Quantité de code que vous devez écrire

Vous avez le module timeit disponible pour déterminer ce qui répond à vos critères spécifiques pour "efficace".

+0

Vitesse d'exécution. – linkmaster03

+0

@ linkmaster03: S'il vous plaît mettre à jour votre question avec des faits supplémentaires, utiles. Cacher des informations importantes sur les commentaires d'une réponse n'aide personne à comprendre votre question. –

Questions connexes