python 进程间如何传递图片或者3维数组

如题目,因为需要传输图片,但是共享内存不能传输3维数组,python版本是3.7,所以Shared_memory用不了,因为是两个进程间用线程传输,发现管道也用不了,请问DL们还有什么办法能够传递图片或者3维数组

您可以使用 Python 中的多处理模块在进程之间传递图像或 3D 数组。一种方法是使用 multiprocessing.Array 在进程之间共享数组数据。另一种方法是使用 multiprocessing.Queue 在进程之间传递图像或数组数据。

例如,您可以使用以下代码创建 3D numpy 数组的共享数组:


import numpy as np
from multiprocessing import Process, Array

def f(arr):
    # reshape the shared array to a numpy array
    np_arr = np.frombuffer(arr.get_obj(), dtype=np.float32).reshape((3, 4, 5))
    # modify the numpy array
    np_arr[0, 0, 0] = 1.0

if __name__ == '__main__':
    # create a shared array of a 3D numpy array
    arr = Array('f', 3 * 4 * 5)
    np_arr = np.frombuffer(arr.get_obj(), dtype=np.float32).reshape((3, 4, 5))
    # start a process to modify the shared array
    p = Process(target=f, args=(arr,))
    p.start()
    p.join()
    # check that the shared array was modified
    print(np_arr[0, 0, 0])

此代码创建形状为 (3, 4, 5) 的 3D numpy 数组的共享数组,并启动修改共享数组的进程。修改是通过将共享数组重塑为 numpy 数组并更改一个元素来完成的。最后,代码通过打印修改元素的值来检查共享数组是否被修改。