问题描述
我想在本地/单进程和远程/多进程场景中使用类。 到目前为止我得到的是:
@ray.remote
class BlahRemote(Blah): pass
class Blah(object):
def save(self,line):
if self.is_writer : self.file.write(line)
else : self.writer.save.remote(line)
我想做的是这样的:
def save(self,line):
if self.is_writer : self.file.write(line)
else :
if RAY.ISREMOTE(self.writer) : self.writer.save.remote(line)
else : self.writer.save(line)
有没有办法做这个检查 RAY.ISREMOTE()
解决方法
我所做的是这个(用set()替换save(),之前使用的文件示例使其更容易掌握)
出人意料的是有 3 种情况而不是 2 种,漏掉了 Reader 和 Writer 都在同一个进程中的情况。
def set(self,key,value):
if self.is_writer :
say('kvset',f'local-writer-set> {key} => {value}')
self.store.set_kv(key,value)
else :
if str(self.writer).startswith('Actor') :
say('kvset',f'remote-set> {key} => {value}')
self.writer.set.remote(key,value)
else :
say('kvset',f'local-reader-set> {key} => {value}')
self.writer.set(key,value)