0

我想使用一个memmap分配的numpy数组,可以使用joblib并行处理,即不同进程之间的共享内存。但我也希望大数组完全存储在 RAM 上,以避免 memmap 对磁盘进行写入/读取。我有足够的 RAM 来存储整个数组,但是使用 np.zeros() 而不是 memmap 会使并行化复杂化,因为前者将内存分配给进程本地。我如何实现我的目标?

例子:

x_memmap = os.path.join(folder, 'x_memmap')
x_shared = np.memmap(x_memmap,dtype=np.float32,shape=(100000,8,8,32),mode='w+')

之后:

n = N / number_of_cores
slices = [ slice((id*n) , (min(N,(id+1)*n))) for id in range(number_of_cores) ]
Parallel(n_jobs=number_of_cores)( delayed(my_job) ( x_shared[sl,:] ) for sl in slices )

如果我用 np.zeros 分配 x_shared ,如下所示,我不能使用并行化。

x_shared = np.zeros(dtype=np.float32,shape=(100000,8,8,32))
4

0 回答 0