【发布时间】:2018-10-20 13:46:12
【问题描述】:
我需要并行处理一个非常大的 numpy 数组 (55x117x256x256)。尝试使用通常的多处理方法传递它会产生 AssertionError,我理解这是因为数组太大而无法复制到每个进程中。因此,我想尝试将共享内存与多处理一起使用。 (我对其他方法持开放态度,只要它们不太复杂)。
我看到一些关于使用 python 多处理的共享内存方法的问题,例如
import numpy as np
import multiprocessing as mp
unsharedData = np.zeros((10,))
sharedData = mp.Array('d', unsharedData)
这似乎工作正常。但是,我还没有看到使用多维数组完成此操作的示例。
我尝试将多维数组粘贴到mp.Array 中,这给了我TypeError: only size-1 arrays can be converted to Python scalars。
unsharedData2 = np.zeros((10,10))
sharedData2 = mp.Array('d', unsharedData2)## Gives TypeError
我可以展平阵列,但如果可以避免,我宁愿不这样做。
是否有一些技巧可以让 multiprocessing Array 处理多维数据?
【问题讨论】:
标签: python numpy python-multiprocessing