Я работаю над проектом, построенным на Python 2.4 (это встроенный проект на Python, поэтому у меня нет выбора по используемой версии Python). Во всем приложении мы используем array.array
для хранения данных.
Поддержка выбора объектов array.array
была добавлена в pickle
(и cPickle
) в версии 2.5. У нас есть жизнеспособный обходной путь в версии 2.4, когда мы используем чистый класс Python Pickle (мы используем подкласс Pickler / Unpickler для обработки массивов), но это не работает с cPickle (нам это нужно из-за проблем с производительностью).
Есть предложения?
РЕДАКТИРОВАТЬ - РЕШЕНИЕ:
Это последний код, который работает (спасибо за предложения):
# Add serialization for array objects
def array_unpickler(data):
return array.array(data[0], data[1:])
def array_pickler(arr):
return array_unpickler, ("%s%s" % (arr.typecode, arr.tostring()),)
copy_reg.pickle(array.ArrayType, array_pickler, array_unpickler)