此篇主要介绍Ray实验中信号的API、例子—信号接受和发送、传递错误信息和actor间信号的传递。
任务和actor生成可以被其他任务或actor通过信号接受。通过信号的传递和接受就可以知道任务和actor是丢失,错误等情况,ray及时处理这些信息,使恢复正常运行。
ray.experimental.signal.send(signal)
发送信号。
信号具有唯一的标识符,这些标识符由
- 发送该信号的actor或者任务的ID(即调用此函数的actor或任务),
- 每次该源发送信号时递增的索引。这个索引使从1开始的。
Parameters(参数):signal –要发送的信号。
下面是一个发送用户定义信号的远程函数的简单示例。
import ray.experimental.signal as signal
# 定义一个信号
class UserSignal(signal.Signal):
def __init__(self, value):
self.value = value
def get_value(self):
return self.value
# 定义一个发送用户定义信号的远程函数
@ray.remote
def send_signal(value):
signal.send(UserSignal(value))
ray.experimental.signal.receive(sources, timeout=None)
从源获取所有未完成的信号。源可以是<