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. Любая помощь могла бы быть полезна!

Вопрос в стороне: если не полка (как ответили здесь и здесь), какой лучший способ сохранить большие словари? Спасибо вам большое!

0 ответов

Другие вопросы по тегам