Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python'中使用零拷贝共享scipy.sparse数组;s射线_Python_Scipy_Multiprocessing_Shared Memory_Ray - Fatal编程技术网

在Python'中使用零拷贝共享scipy.sparse数组;s射线

在Python'中使用零拷贝共享scipy.sparse数组;s射线,python,scipy,multiprocessing,shared-memory,ray,Python,Scipy,Multiprocessing,Shared Memory,Ray,我将大型数组传递给一个计算节点共享内存上的并行进程。在每一轮并行作业中,传递的数组不会被修改。我想传递零拷贝的数组 虽然这在和numpy.sharedmem(请参阅)中是可能的,但我想知道如何工作 据我所知(请参阅,[],[]),ray的put()将对象一次性(序列化,然后反序列化)复制到可用于所有进程的对象存储中 问题: 我不确定我是否正确理解了它,它是对象存储中整个数组的深层副本还是只是对它的引用?有没有办法“不”复制对象?而是传递现有scipy数组的地址/引用?基本上,这是一个真正的浅拷贝

我将大型数组传递给一个计算节点共享内存上的并行进程。在每一轮并行作业中,传递的数组不会被修改。我想传递零拷贝的数组

虽然这在和numpy.sharedmem(请参阅)中是可能的,但我想知道如何工作

据我所知(请参阅,[],[]),ray的put()将对象一次性(序列化,然后反序列化)复制到可用于所有进程的对象存储中

问题:

我不确定我是否正确理解了它,它是对象存储中整个数组的深层副本还是只是对它的引用?有没有办法“不”复制对象?而是传递现有scipy数组的地址/引用?基本上,这是一个真正的浅拷贝,不需要复制整个阵列的开销



Ubuntu 16.04,Python 3.7.6,Ray 0.8.5。

这也有助于理解零拷贝读取是如何工作的
scipy.sparse
matrix不是
ndarray
子类。它是一个自定义Python类,或者更确切地说是类。不同的格式具有不同的类和数据存储属性。一个实际上是一个字典子类,另一个将数据(和索引)存储在多个
ndarray
@hpaulj中。这没问题。我可以将scipy稀疏数组的组件(如非零数据)及其索引作为ndarray传递。