如题目,因为需要传输图片,但是共享内存不能传输3维数组,python版本是3.7,所以Shared_memory用不了,因为是两个进程间用线程传输,发现管道也用不了,请问DL们还有什么办法能够传递图片或者3维数组
1条回答 默认 最新
- 壮志饥餐胡虏肉,笑谈渴饮匈奴血 2023-04-17 17:01关注
您可以使用 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 数组并更改一个元素来完成的。最后,代码通过打印修改元素的值来检查共享数组是否被修改。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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时遇到的编译问题