python shelve TypeError на большом объекте словаря
У меня большой объект словаря dict_tmp
это занимает 40GB
в оперативной памяти (система имеет в общей сложности 64GB
), который имеет строковые ключи и значения с плавающей точкой. я использую d = shelve.open(fname, protocol=2)
а также d['dict_tmp'] = dict_tmp
сохранить словарь, который выдает следующую ошибку:
Traceback (most recent call last):
File "file.py", line 160, in <module>
d['dict_tmp'] = dict_tmp
File "/usr/lib/python2.7/shelve.py", line 133, in __setitem__
self.dict[key] = f.getvalue()
File "/usr/lib/python2.7/bsddb/__init__.py", line 279, in __setitem__
_DeadlockWrap(wrapF) # self.db[key] = value
File "/usr/lib/python2.7/bsddb/dbutils.py", line 68, in DeadlockWrap
return function(*_args, **_kwargs)
File "/usr/lib/python2.7/bsddb/__init__.py", line 278, in wrapF
self.db[key] = value
TypeError: Data values must be of type string or None.
Я полагаю, что модуль shelve предназначен для общих объектов Python, но я думаю, что эта проблема может быть связана с anydbm. Любая помощь могла бы быть полезна!
Вопрос в стороне: если не полка (как ответили здесь и здесь), какой лучший способ сохранить большие словари? Спасибо вам большое!