问题描述
我对 Python 和 Ray 还是很陌生,我查看了教程和谷歌,但是 没有人能回答我的以下问题。我的代码如下所示:
@ray.remote
def calculate_stuff(sequence): # computationally intensive function calling on external SWIG wrapped C-Code
fc = external_function(sequence)
return fc
ray.init()
result_ids = []
for i in permutlist: # permutlist is large list containing large strings (300 - 1000 chars)
result_ids.append(calculate_stuff.remote(i))
allmfe = ray.get(result_ids)
我担心这段代码很慢,因为calculate_stuff 的每次迭代都需要访问一个大的字符串列表(数千万,最多1000 个字符)。 Ray 是否通过调用 ray.put() 将列表存储在对象存储中来自动优化?
我想出了以下代码来确保字符串在对象存储中:
result_ids = []
r_permutlistID = []
for x in range(0,len(permutlist)):
ID = ray.put(permutlist[x])
r_permutlistID.append(ID)
for y in range(0,len(permutlist)): # permutlist is large list containing large strings (300 - 1000 chars)
result_ids.append(calculate_stuff.remote(ray.get(r_permutlistID[y])))
allmfe = ray.get(result_ids)
但是,我担心调用 ray.get() 会影响性能,因为它是同步的。 我的第二个代码块确实获得了轻微的性能提升,但我担心一旦我将其扩展到集群后它的性能如何。
欢迎任何关于我如何确保 Ray 工作人员尽快访问这一大块字符串的建议!谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)