Да, диктофон будет храниться в памяти процесса. Поэтому, если он становится настолько большим, что в ОЗУ системы недостаточно места, вы можете ожидать значительного замедления, так как система начинает заменять память на диск и с диска.
Другие сказали, что несколько миллионов предметов не должны создавать проблемы; Я не совсем уверен. Значительная нехватка памяти (до подсчета памяти, сделанной ключами и значениями). Для Python 2.6 или новее sys.getsizeof дает некоторую полезную информацию о том, сколько RAM различных структур Python занимает. Некоторые быстрые результаты, из Python 2.6 на 64-битной OS X машине:
>>> from sys import getsizeof
>>> getsizeof(dict((n, 0) for n in range(5462)))/5462.
144.03368729403149
>>> getsizeof(dict((n, 0) for n in range(5461)))/5461.
36.053470060428495
Таким образом, накладные расходы ДИКТ колеблется от 36 байт на пункт и 144 байт на пункт на этой машине (точное значение зависит от заполненности внутренняя хеш-таблица словаря: здесь 5461 = 2 ** 14 // 3 - один из порогов, где увеличена внутренняя хеш-таблица).И это прежде, чем добавить накладные расходы для самих предметов dict; если они все короткие строки (скажем, 6 символов или меньше), то это еще добавляет еще> = 80 байт на элемент (возможно, меньше, если многие разные ключи имеют одинаковое значение).
Так что не нужно , что много миллионов предметов диктата, чтобы вывести ОЗУ на типичную машину.
спасибо, узнал о getizeof от этого. Практически я буду иметь дело только с значениями ~ 15 тыс., А скорость - сущностью. Я использую dict просто потому, что я вообще не касался баз данных, но я предполагаю, что DB, который читает и записывает с жесткого диска, будет медленнее, чем чтение/запись в dict? – PPTim
Хорошо, для такого размера у вас не должно быть никаких проблем. Каковы типы ключей и значений? Строки? –
в основном плавает, некоторые строки, несколько списков – PPTim