首页 > 解决方案 > 在多处理中从共享内存中恢复的 numpy 数组是大小的一半

问题描述

我按照这个来让我的 numpy 数组在多处理线程之间共享。我的代码看起来像这样:

param = 'something'
A = 1331
B = 500

iter = [list of things]

shared_arr = mp.Array(ctypes.c_int, A*B)
pool = mp.Pool(initializer=init, initargs=(shared_arr,))
func = partial(foo, param, A, B)
pool.map(func, iter)
pool.close()
pool.join()

def foo(param, A, B, iter):
   arr = np.frombuffer(shared_arr.get_obj())
   print(arr.shape, len(shared_arr))

def init(shared_arr_):
   global shared_arr
   shared_arr = shared_arr_

此代码打印(332750,) 665500为什么它np.frombuffer()返回的值与原始数组的大小不同。为什么会这样?

标签: pythonnumpypython-multiprocessing

解决方案


推荐阅读