chr*_*eck 5 python arrays numpy multiprocessing
我想在多个进程之间共享一个numpy数组。进程仅读取数据,因此我想避免进行复制。我知道如果可以以a开头multiprocessing.sharedctypes.RawArray然后使用创建一个numpy数组,该怎么做numpy.frombuffer。但是,如果最初给我一个numpy数组怎么办?有没有一种方法可以用numpy数组的数据初始化RawArray而不复制数据?还是有另一种方法可以跨进程共享数据而不进行复制?
Mik*_*ike -1
我不确定这是否会在内部复制数据,但您可以传递平面数组:
a = numpy.random.randint(1,10,(4,4))
>>> a
array([[5, 6, 7, 7],
[7, 9, 2, 8],
[3, 4, 6, 4],
[3, 1, 2, 2]])
b = RawArray(ctypes.c_long, a.flat)
>>> b[:]
[5, 6, 7, 7, 7, 9, 2, 8, 3, 4, 6, 4, 3, 1, 2, 2]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2247 次 |
| 最近记录: |