python - 在多处理中从共享内存中恢复的 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()
返回的值与原始数组的大小不同。为什么会这样?
解决方案
推荐阅读
- php - 无法在 laravel 的数据库中保存 .png ext
- rest - Tableau API 查询视图数据返回
而不是 csv 数据 - python - pygame矩形碰撞检测不起作用
- ajax - 在全选复选框 Primefaces DataTable 上触发 AJAX
- ruby - 访问在 Webrick 中运行的 Ruby 应用程序时出现 ECONNRESET 错误
- ubuntu - Cypress 无法在 Ubuntu/Linux 上启动
- scala - 带有 HList Shape 的 Slick Zip Join 在运行时以元组形式出现
- c# - 上传到 S3 的 Windows 服务
- javascript - 使用 React Hooks 从 Prismic API 获取数据
- c# - 如何有效地编辑 C# 字符串数组中的数据