如何创建新的worker(通过运行新的python脚本)并将其连接到现有的学习者
我已经在一个python进程中创建了一个学习者(一个由如何创建新的worker(通过运行新的python脚本)并将其连接到现有的学习者,python,distributed-system,ray,Python,Distributed System,Ray,我已经在一个python进程中创建了一个学习者(一个由@ray.remote修饰的远程对象),现在我想在一个新进程中创建一个worker(由python new_file.py在同一台机器或另一台机器中运行),并将其连接到该学习者。我如何通过使用来实现这一点?假设新员工与学习者在同一台机器上,但他们在不同机器上的答案也很感谢。谢谢您的帮助,@RobertNishihara 下面是我根据写的一个例子。和@RobertNishihara的ray.init(address='auto') 启动服务器的
@ray.remote
修饰的远程对象),现在我想在一个新进程中创建一个worker(由python new_file.py
在同一台机器或另一台机器中运行),并将其连接到该学习者。我如何通过使用来实现这一点?假设新员工与学习者在同一台机器上,但他们在不同机器上的答案也很感谢。谢谢您的帮助,@RobertNishihara
下面是我根据写的一个例子。和@RobertNishihara的ray.init(address='auto')
启动服务器的main.py
导入时间
导入光线
@雷,遥控器
班级柜台:
定义初始化(自):
self.count=0
def set_self_处理程序(self,handler):
self.handler=handler
def等待(自我):
如果self.count==0:
时间。睡眠(1)
self.handler.wait.remote()
def增加(自身,n):
self.count+=n
def get_计数(自身):
返回自计数
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
ray.init()
counter=counter.options(name='interactitor').remote()
counter.set\u self\u handler.remote(计数器)
counter.wait.remote()
而ray.get(counter.get_count.remote())==0:
时间。睡眠(1)
打印(ray.get(counter.get\u count.remote())
ray.shutdown()
运行increase.py
时,会出现一条错误消息,因为服务器已被main.py
2019-12-02 18:20:43708错误工作者。py:939--打印日志:服务器关闭连接。
2019-12-02 18:20:43708错误工作者。py:1039--侦听错误消息\u raylet:服务器关闭了连接。
2019-12-02 18:20:43709导入线程时出错。py:89--导入线程:服务器关闭了连接
我建议你看看演员,利用你可以传递“演员手柄”的事实。请参阅并@RobertNishihara感谢您的回复,并对我没有说清楚表示抱歉。通过在同一台机器或不同的机器上运行
python new_file.py
,可以创建新的辅助进程。在这种情况下,我不知道如何将它连接到运行学习者的流程,以及如何获得“学习者处理者”。我明白了。可以在同一个光线群集上运行的多个光线应用程序之间共享参与者。让两个驱动程序使用Ray.init(…)
连接到同一个Ray群集,例如Ray.init(address='auto')
,然后您可以在中使用命名的actor API。请注意,这个API将来可能会有一些变化(尽管功能将继续存在)。嗨,@RobertNishihara,我在回答中写了一个例子。你认为这是一个合适的解决方案吗?
"""increase.py, started by another python command"""
import ray
from test import Counter
if __name__ == '__main__':
ray.init(address='auto') # connect to the server that has been started by main.py
counter = ray.experimental.get_actor('CounterActor')
ray.get(counter.increase.remote(1))