如何解决同步ray.remote中的循环
我有与ray并行的巨大的远程功能,但是在其中,确实需要串行执行一个循环-每个迭代都必须全局执行一次,并且只能执行一次。所以,我的想法是要有一个互斥锁来同步执行线程
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任务都不会访问其他任务的内存,并且您不必担心同步。
对于共享内存中的共享对象,它们是只读的。因此,您也不必担心同步对它们的访问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。