定义一个列表
g = [1, 2, 3, 4]
版本 1
@ray.remote
def f(*g):
return np.mean(g, axis=0)
f_ids = [f.remote(*g) for _ in range(10)]
print(ray.get(f.remote(*f_ids)))
版本 2
@ray.remote
def f(g): # g is object ID list
return np.mean(g, axis=0)
f_ids = [f.remote(g) for _ in range(10)]
print(ray.get(f.remote(f_ids)))
第一个代码工作正常,但版本 2 不起作用。错误信息是
ray.get(f.remote(f_ids)) + 不支持的操作数类型:“common.ObjectID”和“common.ObjectID”
我想做第 2 版之类的事情的原因是我实际上想做以下事情
@remote
def f(g1, g2): # g1 and g2 are object ID lists
... # do something here
我不知道如何制作g1
and g2
as *g1
,*g2
所以我想出了第 2 版。为什么第 2 版不起作用?我该如何解决?
参考代码在这里 https://ray.readthedocs.io/en/latest/example-parameter-server.html#synchronous-parameter-server