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 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题