Question

Quelqu'un sait-il si Python shelve Le module utilise des IO mappés par la mémoire?

Peut-être que cette question est un peu trompeuse. Je le réalise shelve Utilise un module de style DBM sous-jacent pour faire son sale boulot. Quelles sont les chances que le module sous-jacent utilise mmap?

Je prototype un montant de données, et même si je réalise que l'optimisation prématurée est généralement désapprouvée, cela pourrait vraiment m'aider à comprendre les compromis impliqués dans ma conception.

Était-ce utile?

La solution

Existant dbm Les implémentations dans la bibliothèque standard Python utilisent toutes des E / S "normales", pas du mappage de mémoire. Vous devrez coder le vôtre dbmImplémentation ISH avec mappage de mémoire et intégrer avec shelve (directement, ou, plus productif, à travers anydbm).

Autres conseils

Je ne sais pas ce que vous essayez d'apprendre en posant cette question, car vous semblez déjà connaître la réponse: cela dépend de l'utilisation du magasin DBM réel. Certains d'entre eux utiliseront MMAP - je m'attends à ce que tout sauf DumbDBM utilise MMAP - mais alors quoi? Les frais généraux de Shelve ne sont certainement pas dans le choix MMAP-Versus-Fileio, mais dans l'opération de décapage. Vous ne pouvez pas mmap le fichier DBM raisonnablement vous-même dans les deux cas, car le module DBM peut avoir son propre verrouillage fantaisie (et ce n'est peut-être pas un seul fichier de toute façon, comme lorsqu'il utilise BSDDB.)

Si vous cherchez simplement l'inspiration pour votre propre banque de données, eh bien, ne regardez pas la plate-forme, car tout ce qu'il fait est de cornichon et de pass à un autre centre de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top