我已经实现了我自己的“DataSet”类,它继承自列表,我需要移植该代码以在多处理模式下运行。这是我的类(class)示例:
class DataSet(list):
@property
def n_training(self):
return len(self) * 0.8
@property
def n_validation(self):
return len(self) * 0.2
除了在此类中创建“Manager().list”实例之外,还有更简单的方法来执行此操作,例如:
from multiprocessing import Manager
class DataSet(Manager().list):
请注意,“Manager().list”代表
manager = Manager()
manager.list()
最佳答案
根据@senderle 和@Martijn Pieters 的建议,我设法得到了a solution。
from multiprocessing.managers import BaseManager
from multiprocessing.managers import BaseProxy
class DataSetClass(list):
@property
def n_training(self):
return len(self) * 0.8
@property
def n_validation(self):
return len(self) * 0.2
class DataSetProxy(BaseProxy):
_exposed_ = ('append', '__len__')
def append(self, item):
return self._callmethod('append', item)
def __len__(self):
return self._callmethod('__len__')
class MyManager(BaseManager):
pass
MyManager.register('DataSet', DatasetClass, DataSetProxy)
if __name__ == '__main__':
manager = MyManager()
manager.start()
dataset = manager.DataSet()
dataset.append('item1')
dataset.append('item2')
print len(dataset)
关于python - 如何在python中继承 "Manager().list"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15225737/