我有一个ray.remote函数,它从一个小的输入产生一个大的输出数组。
@ray.remote
def function(input):
large_numpy_array = do_smth_with_input
return large_numpy_array
我列出了应该对其执行功能的各种输入参数:
ray.init()
input = [param1,param2....]
output = [function.remote(i) for i in input]
output = output.get()
最后,由此产生的列表应解释为数组
output = numpy.asarray(output)
理想地,这应该花费尽可能少的时间,因为列表元素已经是数组。不幸的是,存储器中的各个阵列不是直接相接的,因此必须先分配新的存储器,然后再将各个阵列复制到其中。由于阵列非常大,因此需要很多时间。有没有一种方法可以将数组一个接一个地存储在内存中,以便可以将输出列表轻松地重新解释为数组?还是有可能分配可以由各个进程使用的共享内存,如果可以,它到底是如何工作的?