Я работаю над проектом, построенным на python 2.4 (это встроенный проект python, поэтому у меня нет выбора используемой версии python). Во всем приложении мы используем array.array
для хранения данных.
Поддержка травления объектов array.array
была добавлена в pickle
(и cPickle
) в версии 2.5. У нас есть жизнеспособный обходной путь в 2.4 при использовании класса pickle на чистом Python (мы создаем подкласс 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)