Сохранение пользовательских атрибутов при выборе подкласса массива numpy

Я создал подкласс NumPy ndarray послецифровая документация, В частности, у меня естьдобавил пользовательский атрибут путем изменения предоставленного кода.

Я манипулирую экземплярами этого класса в параллельном цикле, используя Pythonmultiprocessing, Насколько я понимаю, способ, которым область по существу «копируется» в несколько потоков, используетpickle.

Проблема, с которой я сейчас сталкиваюсь, связана с тем, как обрабатываются массивы. Я не могу найти исчерпывающую документацию по этому поводу, но некоторыеобсуждения между разработчиками укропа предположить, что я должен сосредоточиться на__reduce__ метод, который вызывается при травлении.

Кто-нибудь может пролить больше света на это? Минимальный рабочий пример - это просто пример кода, на который я ссылался выше, скопированного здесь для полноты:

import numpy as np

class RealisticInfoArray(np.ndarray):

    def __new__(cls, input_array, info=None):
        # Input array is an already formed ndarray instance
        # We first cast to be our class type
        obj = np.asarray(input_array).view(cls)
        # add the new attribute to the created instance
        obj.info = info
        # Finally, we must return the newly created object:
        return obj

    def __array_finalize__(self, obj):
        # see InfoArray.__array_finalize__ for comments
        if obj is None: return
        self.info = getattr(obj, 'info', None)

Теперь вот проблема:

import pickle

obj = RealisticInfoArray([1, 2, 3], info='foo')
print obj.info  # 'foo'

pickle_str = pickle.dumps(obj)
new_obj = pickle.loads(pickle_str)
print new_obj.info  #  raises AttributeError

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос