Я думаю, что память используется для синтаксического анализа словаря AST.
Для такого использования гораздо лучше, если вы используете модуль cPickle вместо использования repr
/ eval
.
import cPickle
x = {}
for i in xrange(1000000):
x["k%i" % i] = "v%i" % i
cPickle.dump(x, open("data", "wb"), -1)
x = cPickle.load(open("data", "rb"))
-1
, когда дамп означает использование последнего протокола, который более эффективен, но, возможно, не обратно совместим со старыми версиями Python. Если это хорошая идея или нет, зависит от того, почему вам нужно сделать сброс / загрузку.