Вопрос

Кто-нибудь знает, если Python's shelve Модуль использует memory-mapape IO?

Может быть, этот вопрос немного вводит в заблуждение. Я понимаю, что shelve Использует основной модуль в стиле DBM, чтобы сделать его грязную работу. Каковы шансы, что базовый модуль использует mmap?

Я прототирующую хранение данных, и хотя я понимаю преждевременную оптимизацию, как правило, нахмуривается, это действительно может помочь мне понять компромиссы, связанные с моим дизайном.

Это было полезно?

Решение

Существующий dbm Реализации в стандартной библиотеке Python все используют «Нормальный» ввод / вывод, а не отображение памяти. Вам нужно будет кодировать свой собственный dbmреализация ISH с отображением памяти и интегрировать его с shelve (напрямую или, более продуктивно, через anydbm).

Другие советы

Я не уверен, что вы пытаетесь узнать, задавая этот вопрос, поскольку вы уже кажется, знаете ответ: это зависит от фактического используемого магазина DBM. Некоторые из них будут использовать MMAP - я ожидаю, что все, кроме Dumbdbm, чтобы использовать MMAP - но так что? Накладные расходы в шейде почти наверняка не в выборе MMAP-VERSUS-FILEIO, а в мариновании. Вы не можете мчаться с помощью файла DBM разумно себя в любом случае, поскольку модуль DBM может иметь собственную неоднозначную блокировку (и в любом случае не может быть одним файлом, например, когда он использует BSDDB.)

Если вы просто ищете вдохновение для своего собственного хранилища данных, ну, не смотрите на Shalve, так как все это, это созревание и проход к другому хранению данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top