问题描述
我正在尝试并行化一些创建 Predictor
类实例的代码。这个类包含
许多方法和属性,看起来像这样:
class Predictor:
def__init__(...):
def load_models(...):
def load_data(...):
def predict(...):
在 DataManager
方法中调用 load_data
类的地方。当我添加 __reduce__
函数时,它只会序列化 Predictor 类的方法,而不是 DataManager
类的方法。如何在 Predictor
类中序列化并包含所有属性方法?
编辑:
from generators import DataManager #class used to load data
class Predictor:
def __init__(self,saved_model_dir,QS_params=None):
'''
Parameters
----------
saved_model_dir : str
Predictor directory.
params : dict
A dictionary of all predictor
algorithms
'''
self.saved_model_dir = saved_model_dir
# attributes to save or serialize
self.save_attr = ['onehot_cutoffdate','name','version_number','batch_size','aggregate_data','test_size']
if(params!=None):
self.params = params
def loadDataManager(self,name=None,batch_size=None,test_size=None,..)
data_fp = self.saved_model_dir + '/path_to_data'
self.dataManager = DataManager(self,data_fp,self.name,self.batch_size,self.test_size,...)
如何序列化类的所有方法及其属性(self.save_attr 中的列表)?
我正在尝试将其与 ray 一起使用,并添加了一个 __reduce__
函数,如下所示:
class Predictor:
def __init__(self,'test_size']
if(params!=None):
self.params = params
def __reduce__(self):
'''This is necessary for serializing the class. Every attribute needed needs to be in the serializer line'''
deserializer = Predictor
serializer = (self.saved_model_dir,self.save_attr,self.QS_params,)
return deserializer,serializer
但是,当我尝试将这个类与 Ray 一起使用时,我会得到一个 AtrributeError
,因此似乎所有内容都必须序列化。
>>> predictor.dataManager
<generators.DataManager object at 0x7fac0c00c290>
>>> ray.get(ray.put(predictor)).dataManager
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
AttributeError: 'Predictor' object has no attribute 'dataManager'
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)