同步ray.remote中的循环

问题描述

我有与ray并行的巨大的远程功能,但是在其中,确实需要串行执行一个循环-每个迭代都必须全局执行一次,并且只能执行一次。所以,我的想法是要有一个互斥锁来同步执行线程

@H_502_2@import ray ray.init () @ray.remote def remote_function (): # misc calculation # loop to be synchronized lock (mutex) for i in range (gazillion): # do some prep work unlock (mutex) # do heavy work lock (mutex) unlock (mutex)

这种方法在并行C代码中非常有用,但是当我尝试使用互斥体和ray进行搜索时,基本上没有关于该主题的信息,因此我怀疑我缺少一些关键概念。我的问题是-这种方法(围绕循环启动和停止进行锁定/解锁)在python 3.7 / ray中是否有效(如果不是)-是否可以使用一种设计模式来代替?我应该在ray中安全使用哪个互斥体库?

谢谢

解决方法

Ray的任务在不同的进程中运行。这意味着每个Ray任务都不会访问其他任务的内存,并且您不必担心同步。

对于共享内存中的共享对象,它们是只读的。因此,您也不必担心同步对它们的访问。