私はpython 2.4で構築されたプロジェクトに取り組んでいます(これは組み込みのpythonプロジェクトであるため、使用するpythonのバージョンを選択できません)。アプリケーション全体で、array.array
データを保存するために使用します。
array.array
オブジェクトの酸洗いのサポートは、2.5 でpickle
(および) に追加されました。cPickle
純粋な python pickle クラス (配列を処理するために Pickler/Unpickler をサブクラス化) を使用する場合、2.4 で実行可能な回避策がありますが、これは 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)