多维multiprocessing.Array的所有创建方法及那个方法最好
时间: 2023-07-15 09:13:27 浏览: 69
创建 `multiprocessing.Array` 的方法有以下几种:
1. `multiprocessing.Array(typecode_or_type, size_or_initializer, *, lock=True)`:创建一个共享数组,`typecode_or_type` 指定数组元素的类型(如 `'i'` 表示整数),`size_or_initializer` 指定数组的大小或者一个可迭代对象作为初始值,`lock` 参数指定是否需要锁来保护数组的访问。该方法返回一个 `multiprocessing.Array` 对象。
2. `multiprocessing.RawArray(typecode_or_type, size)`:创建一个共享内存数组,与 `multiprocessing.Array` 不同的是,它不提供任何锁机制来保护数组访问。其他参数和返回值与 `multiprocessing.Array` 相同。
3. `multiprocessing.sharedctypes.RawArray(typecode_or_type, size)`:创建一个共享内存数组,与 `multiprocessing.RawArray` 相同,但是它返回一个 ctypes 对象,可以直接用于 C 扩展中。
4. `numpy.ctypeslib.as_array(mp_arr)`:将 `multiprocessing.Array` 或 `multiprocessing.sharedctypes.RawArray` 转换为 numpy 数组,可以方便地进行数组操作。
以上四种方法都可以创建多维数组,只需要将 `size_or_initializer` 改为一个元组,指定每个维度的大小即可。
其中,使用 `multiprocessing.Array` 方法最好,因为它提供了锁机制来保护数组访问,在多进程环境下更加安全。如果不需要锁机制,可以使用 `multiprocessing.RawArray` 方法创建共享内存数组。 `multiprocessing.sharedctypes.RawArray` 方法返回的是 ctypes 对象,不太方便操作,一般用于 C 扩展中。最后,如果需要进行数组操作,可以将 `multiprocessing.Array` 或 `multiprocessing.RawArray` 转换为 numpy 数组,这样可以方便地使用 numpy 提供的各种数组函数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)