首页 > 解决方案 > 如何创建 5 字节元素的 3D 数组以与“pool.map”共享使用

问题描述

在带有 Python 3.9.4 和 NumPy 1.20.1 的 WINdows 10 Pro 上:

pool.map我能够创建一个由固定 5 字节元素组成的 3D 数组(尽管我对 NumPy 知之甚少,但它可以在多处理函数中进行只读访问)。元素包含 ASCII 字符(数组故意比np.dtype('U5')使用大约 20 个字节来存储 5 个 unicode 字符小得多,这很浪费)。

我现在想让它在多处理函数中可共享以供读写使用,大概是使用multiprocessing.sharedctypes.Array. 但是我无法通过以下代码,因为它总是给出错误(当前错误:)TypeError: this type has no size,但是我对其进行了修改:

from multiprocessing.sharedctypes import Array
import numpy as np

np_array = np.chararray((5,31,4),5)
X_np = Array(np.ubyte(5), 5*31*4, lock=False)

所以有些事情是严重错误的,但我看不到它。任何建议表示赞赏(因为 Internet 中的大多数示例似乎都有整数或浮点类型的数组)。

标签: numpymultidimensional-arraypython-multiprocessing

解决方案


推荐阅读