Использовать протокол = 2 варианта cPickle. Протокол по умолчанию (0) намного медленнее и создает файлы большего размера на диске.
Если вы просто хотите работать со словарем большего размера, чем может вместить память, модуль shelve является хорошим быстрым и грязным решением. Он действует как диктовка в памяти, но сохраняет себя на диске, а не в памяти. Полка основана на cPickle, поэтому обязательно установите для вашего протокола значение, отличное от 0.
Преимущества базы данных, такие как sqlite по сравнению с cPickle, будут зависеть от вашего варианта использования. Как часто вы будете писать данные? Сколько раз вы ожидаете прочитать каждый элемент данных, который вы пишете? Вы когда-нибудь захотите выполнить поиск данных, которые вы пишете, или загрузить их по одному фрагменту за раз?
Если вы выполняете однократную запись, многократное чтение и загружаете по одной части за раз, обязательно используйте базу данных. Если вы делаете запись один раз, прочитайте один раз, cPickle (с любым протоколом, отличным от протокола по умолчанию = 0) будет трудно победить. Если вы просто хотите большой, постоянный диктант, используйте полку.