kaien_Q 2023-04-13 18:12 采纳率: 25%
浏览 25
已结题

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

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

  • 写回答

1条回答 默认 最新

  • 关注

    您可以使用 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 数组并更改一个元素来完成的。最后,代码通过打印修改元素的值来检查共享数组是否被修改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 修改了问题 4月14日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏