全部,我正在尝试使用多处理并平行一些代码,并且我已经删除了我的代码,以便评论我的主类的行
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))
我实际上解决了这个问题。我想问题是我选择类别类的所有自我.___方法/属性。我使用创建和运行选择器类的INIT方法创建了一个其他类,Selector_wrapper。这很好。
总而言之,创建一个包装类别类别,没有其他方法,而没有属性,请解决问题!