[英]Python read image to numpy array with multiprocessing
我正在研究一个python程序,它批量读取许多图像(比如说500张图像)并将其存储在numpy数组中。
现在它是单线程的,并且IO非常快,需要很多时间的部分是创建numpy数组并对其进行处理。
通过使用多处理模块,我可以在其他过程中读取和创建数组。 但是我有问题让主线程访问那些数据。
我努力了:
1:使用multiprocessing.queues:非常慢,我相信这是腌制和腌制浪费的大量时间。 腌制和解腌大型的numpy数组需要花费一些时间。
2:使用Manager.list():比队列快,但是当尝试在主线程中访问它时,它仍然很慢。 即使只是遍历列表,也不做任何事情,每个项目需要2秒。 我不明白为什么要花这么长时间。
有什么建议么 ? 谢谢。
看来我必须回答自己的问题。
我面临的问题可以通过将共享内存与numpy一起使用来解决。
可以在以下位置找到更多详细信息
这个想法基本上是在主进程中创建共享内存,并将该内存分配给一个numpy数组。 在以后的其他过程中,您可以从中读取或写入。
这种方法对我来说效果很好,可以将程序速度提高10倍。
因为我正在处理大量数据,所以酸洗不是我的选择。
最关键的代码是:
shared_arr = mp.Array(ctypes.c_double, N)
arr = tonumpyarray(shared_arr)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.