如题目,因为需要传输图片,但是共享内存不能传输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 谁有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开发版的贪吃蛇游戏