我有一个关于在ray框架中访问共享内存的问题。
设想在一台机器上进行以下设置:
启动光线簇
启动进程/工作者python脚本w1.py,它通过ray.put(o1)将对象o1放入共享内存
启动一个进程/工作者python脚本w2.py,它试图通过ray.get(…)从共享内存中获取o1
有没有办法从另一个工作进程w2.py访问对象o1(从w1.py进程放入共享内存)?
当我从w2.py执行ray.objects()时,我得到了obejct引用字符串,但是我如何从共享内存中检索对象呢?我无法在w2.py中初始化objectref对象
1条答案
按热度按时间nhhxz33t1#
本机不支持此操作。原因是ray的对象具有各种元数据,这些元数据用于各种功能(例如,perf优化或使用引用计数的自动内存管理)。
如果你想做到这一点,我认为有两个解决方案。
使用分离的actor api。独立演员是指一生不与司机分享车费的演员。创建分离的actor后,可以使用ray.get\u actor api获取actor句柄。这样,您就可以将一个对象放在分离的actor中,并从多个驱动程序进行访问。
还有另一种使用cloudpickle的方法,但是我不太熟悉这个解决方案,所以我不会写这个。请转到ray在github repo中的讨论页面,询问更多关于它的细节。