Я работаю над проектом, основанным на python 2.4 (это встроенный проект python, поэтому у меня нет выбора в используемой версии python). Во всем приложении мы используем array.array
для хранения данных.Pickling array.array в 2.4 с помощью cPickle
Опора для травления array.array
объектов добавлено в pickle
(и cPickle
) в 2.5. У нас есть жизнеспособное обходное решение в 2.4 при использовании класса чистого питона (мы подклассифицируем Pickler/Unpickler для обработки массивов), но это не работает с cPickle (это нам нужно из-за проблем с производительностью).
Любые предложения?
EDIT - РЕШЕНИЕ:
Это окончательный код, который, кажется, работает (спасибо за предложения):
# 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)
Отлично! Я получил работу. Ваше предложение привело меня к http://effbot.org/librarybook/copy-reg.htm, в котором представлены несколько отличных примеров. –