Frage

Weiß jemand, ob Python's shelve Modul verwendet maßstabsgeschützte IO?

Vielleicht ist diese Frage ein bisschen irreführend. Ich realisiere es shelve Verwendet ein zugrunde liegendes Modul im DBM-Stil, um seine schmutzige Arbeit zu erledigen. Was sind die Chancen, die das zugrunde liegende Modul verwendet? mmap?

Ich Prototypen eines Datenspeichers und obwohl ich feststelle, dass eine vorzeitige Optimierung im Allgemeinen verpönt ist, könnte dies mir wirklich helfen, die Kompromisse mit meinem Design zu verstehen.

War es hilfreich?

Lösung

Vorhandenen dbm Implementierungen in der Python -Standardbibliothek verwenden alle "normale" I/A, nicht Speicherzuordnung. Sie müssen Ihre eigenen codieren dbmISH -Implementierung mit Speicherzuordnung und integrieren Sie sie in shelve (direkt oder produktiver durch anydbm).

Andere Tipps

Ich bin mir nicht sicher, was Sie lernen zu lernen, indem Sie diese Frage stellen, da Sie die Antwort bereits zu kennen scheinen: Es hängt von dem tatsächlichen DBM -Store ab, der verwendet wird. Einige von ihnen werden MMAP verwenden - ich erwarte, dass alles andere als dumbdbm MMAP verwendet - aber na und? Der Overhead in Regal ist mit ziemlicher Sicherheit nicht in der Auswahl von MMAP-gegen-fileio, sondern in der Wickling-Operation. Sie können die DBM -Datei in beiden Fällen nicht selbst vernünftigerweise selbst eingehen, da das DBM -Modul möglicherweise eine eigene schicke Sperre hat (und es ist möglicherweise sowieso keine einzige Datei, beispielsweise wenn es BSDDB verwendet.)

Wenn Sie nur nach Inspiration für Ihren eigenen Datenspeicher suchen, schauen Sie sich das Regal nicht an, da alles, was es tut, einen anderen Datenspeicher in einem anderen Datenspeicher ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top