Pregunta

¿Alguien sabe si Python's shelve ¿El módulo usa IO mapeado de memoria?

Quizás esa pregunta sea un poco engañosa. me di cuenta que shelve Utiliza un módulo de estilo DBM subyacente para hacer su trabajo sucio. ¿Cuáles son las posibilidades de que usa el módulo subyacente? mmap?

Estoy prototipos de un almacén de datos, y aunque me doy cuenta de que la optimización prematura generalmente está mal, esto realmente podría ayudarme a comprender las compensaciones involucradas en mi diseño.

¿Fue útil?

Solución

Existente dbm Las implementaciones en la biblioteca estándar de Python usan E/S "normales", no mapeo de memoria. Tendrás que codificar el tuyo dbmImplementación de ISH con mapeo de memoria e integrarla con shelve (directamente o, más productivamente, a través de anydbm).

Otros consejos

No estoy seguro de lo que está tratando de aprender haciendo esta pregunta, ya que ya parece saber la respuesta: depende de la tienda DBM real que se utiliza. Algunos de ellos usarán MMAP, espero que todo menos DumbDBM use MMAP, pero ¿y qué? La sobrecarga en Shelve es casi seguro que no está en la elección de MMAP-A-Fileio, sino en la operación de decapado. No puede mMAP el archivo DBM sensiblemente en cualquier caso, ya que el módulo DBM puede tener su propio bloqueo elegante (y puede no ser un solo archivo de todos modos, como cuando usa BSDDB).

Si solo está buscando inspiración para su propio almacén de datos, bueno, no mire a Shelve, ya que todo lo que hace es Pickle-and-Pass-Along a otro almacén de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top