В настоящее время я пытаюсь реализовать параллельное выполнение процесса.Для каждого из этих процессов каждый процесс должен создать копию объекта «А», а затем продолжить работу с этим объектом.
У меня есть следующее:
from copy import deepcopy
def some_A():
def wrapper_singlerun(_):
return single_run(self, t_kernel, X, Y)
pool = pathos.multiprocessing.Pool(4)
all_responses = pool.map(wrapper_singlerun, 100)
def single_run(self, t_kernel, X, Y):
t_kernel = deepcopy(t_kernel) # <<< This line fails
...
Обратите внимание, чтодве функции НЕ находятся в одном классе!(self должен быть словарём объектов, чтобы иметь возможность доступа к полям из этого объекта. Хотя эти поля никогда не изменяются).
Однако, когда я применяю вышеуказанные функции, я получаю следующую ошибку:
self = <bacode.tripathy.src.bilionis_refactor.t_kernel.TripathyMaternKernel object at 0x1a0e6f5ba8>
@property
def param_array(self):
"""
Array representing the parameters of this class.
There is only one copy of all parameters in memory, two during optimization.
!WARNING!: setting the parameter array MUST always be done in memory:
m.param_array[:] = m_copy.param_array
"""
if (self.__dict__.get('_param_array_', None) is None) or (self._param_array_.size != self.size):
self._param_array_ = np.empty(self.size, dtype=np.float64)
E AttributeError: у объекта 'TripathyMaternKernel' нет атрибута 'size'
/Users/davidal/miniconda3/lib/python3.6/site-packages/paramz/core/parameter_core.py:349: AttributeError
Я использовал для получения аналогичной ошибки, выбравобъект при использовании многопроцессорности.Однако я не совсем понимаю, почему это происходит на этот раз.Нужно ли копировать объект t_kernel
по-другому?Любые идеи, почему вышеприведенная функция не работает?