读取Raydocs我看到它支持对dicts
进行本地序列化(“直接序列化”),
但我无法理解这意味着什么,或者我应该如何使用这些序列化对象。
鉴于我有以下流程:
import ray
ray.init()
dict_1 = {}
dict_2 = {}
@ray.remote
def f(x):
dict_1[x] = x*x
dict_2[x] = x*x*x
return x
futures = [f.remote(i) for i in range(4)]
print(ray.get(futures))
我应该做些什么来引导线程安全行为吗
ray remote功能在不同的“进程”中运行。这意味着当您运行4个不同的远程调用时,它将具有不同的地址空间(因此,您在代码中所做的基本上没有那么有用)。序列化的意思是,当您使用参数
i
调用f.remote
时,对象i(即您的参数)应该序列化,因为它将被发送到其他进程(因此Ray支持并行化)。Ray使用大对象的共享内存使此过程非常快速另外,如果希望共享状态,可以使用actors(https://ray.readthedocs.io/en/latest/actors.html)。使用actor时,不需要关心线程安全,因为actor的状态更新是按照调用actor的顺序进行的
相关问题 更多 >
编程相关推荐