gpt4 book ai didi

python - 如何在python中继承 "Manager().list"?

转载 作者:行者123 更新时间:2023-11-28 17:48:04 25 4
gpt4 key购买 nike

我已经实现了我自己的“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com