繁体   English   中英

Python通过多处理将图像读取到numpy数组

[英]Python read image to numpy array with multiprocessing

我正在研究一个python程序,它批量读取许多图像(比如说500张图像)并将其存储在numpy数组中。

现在它是单线程的,并且IO非常快,需要很多时间的部分是创建numpy数组并对其进行处理。

通过使用多处理模块,我可以在其他过程中读取和创建数组。 但是我有问题让主线程访问那些数据。

我努力了:

1:使用multiprocessing.queues:非常慢,我相信这是腌制和腌制浪费的大量时间。 腌制和解腌大型的numpy数组需要花费一些时间。

2:使用Manager.list():比队列快,但是当尝试在主线程中访问它时,它仍然很慢。 即使只是遍历列表,也不做任何事情,每个项目需要2秒。 我不明白为什么要花这么长时间。

有什么建议么 ? 谢谢。

看来我必须回答自己的问题。

我面临的问题可以通过将共享内存与numpy一起使用来解决。

可以在以下位置找到更多详细信息

在共享内存中使用numpy数组进行多处理

这个想法基本上是在主进程中创建共享内存,并将该内存分配给一个numpy数组。 在以后的其他过程中,您可以从中读取或写入。

这种方法对我来说效果很好,可以将程序速度提高10倍。

因为我正在处理大量数据,所以酸洗不是我的选择。

最关键的代码是:

shared_arr = mp.Array(ctypes.c_double, N)
arr = tonumpyarray(shared_arr)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM