Can't Pickle Wrapper Class Object - PullRequest
       32

Can't Pickle Wrapper Class Object

0 голосов
/ 10 марта 2019

Все, я пытаюсь распараллелить некоторый код, используя многопроцессорность, и я сократил свой код так, чтобы комментировать строку моего основного класса

self.obs = Observer(self.guess)

заставляет систему работать без ошибок. Если я напишу

obs = Observer(self.guess)

Это работает, но если я пишу self.obs, я получаю

TypeError: can't pickle Observer objects

Вот весь класс, который я пытаюсь импортировать. Это просто оболочка для ephem.Observer, у которой при импорте была такая же ошибка.

import numpy as np 
from req import SETTINGS
from req.helpers import load_db, pack_into_vector, create_observer 

class Observer:
        def __init__(self, beta=np.zeros((2,))):
            self.observer = create_observer(beta)
            return

        def __getstate__(self):
            return {'observer': self.observer}

Ошибка возникает в p.start (), где

p = Process(target=selector,args=(first_guess, recording_queue, guess_queue))

1 Ответ

0 голосов
/ 10 марта 2019

Я действительно решил это.Я предполагаю, что проблема была со всеми self .___ методами / атрибутами моего класса селектора.Я создал дополнительный класс selector_wrapper с методом init, который создал и запустил класс селектора.Это сработало отлично.

В итоге, создание класса-оболочки без методов, отличных от init и без атрибутов, решило проблему!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...