Мне было поручено прочитать файл .txt, который представляет собой журнал различных событий, и записать некоторые из этих событий в словарь.
Проблема в том, что размер файла иногда может превышать 3 ГБ. Это означает, что словарь становится слишком большим, чтобы поместиться в основную память. Кажется, что Shelve — хороший способ решить эту проблему. Однако, поскольку я буду постоянно изменять словарь, у меня должна быть включена опция writeback
. Это то, что меня беспокоит - в учебнике говорится, что это замедлит процесс чтения/записи и будет использовать больше памяти, но я не могу найти статистику о том, как это влияет на скорость и память.
Может ли кто-нибудь уточнить, насколько это влияет на скорость чтения/записи и память, чтобы я мог решить, использовать ли опцию обратной записи или пожертвовать некоторой читаемостью ради эффективности кода?
Спасибо
shelf['key'] = newvalue
), вам не нужна обратная запись. Если вы изменяете в нем изменяемые типы (shelf['key'].append(x)
, вам нужна обратная запись. Конечно, вы можете отключить обратную запись и всегда помнить об изменении и замене значений на своей полке, если хотите. - person Thomas K   schedule 24.05.2011temp
- person inspectorG4dget   schedule 24.05.2011.sync()
, после чего он перезаписывается на диск и освобождается. Таким образом, попадание зависит от того, по какому шаблону вы обращаетесь к файлу. - person Thomas K   schedule 25.05.2011