У меня есть класс Python, который общается через службу ROS со средой моделирования.Теперь я хочу общаться с несколькими симуляциями параллельно.
Подробно, у класса среды есть функция шага, которая принимает аргумент и возвращает наблюдения моделирования:
self.envs = [Environment("AI1"),
Environment("AI2")]
self.pool = Pool(processes=len(self.envs))
ac = # some actions
res0 = self.pool.apply_async(self.envs[0].step, ac[0])
res1 = self.pool.apply_async(self.envs[1].step, ac[1])
res_list = []
res_list.extend(res0.get())
res_list.extend(res1.get())
Конечно, теперь я получаю следующую ошибку
cPickle.PicklingError: Can't pickle: поиск атрибута встроенный .instancemethod не удалось
, поскольку служба ROSPy является членом Environment
Можно ли создать среду в самом пуле?Или поможет переход на потоки Python?