从磁盘并行加载多个文件时是否有任何速度?

时间:2018-05-01 20:01:20

标签: python file-io parallel-processing io multiprocessing

我正在开发一个项目(用python 2.7编写),我处理了几千个图像,每个图像的大小约为2.7MB。目前,工作流程如下:

  • 1进程将映像从磁盘顺序加载到multiprocessing.Manager().Queue()
  • N进程使用队列中的映像进行预处理并将结果存储在第二个队列中
  • 1进程从第二个队列中获取图像并将它们保存到磁盘(较小的文件,不是真正的问题)

到目前为止,这种方法运行良好,我可以产生足够的预处理过程,因此从磁盘加载成为瓶颈。

为了娱乐和学习,我正在尝试使用2个进程,每个进程从磁盘加载一半文件并将它们放在同一队列中。我想看看是否能让我从磁盘上加载更快的时间 但是,由于我的设置(带有ZFS和各种缓存层的硬盘驱动器),这个"优化的结果"是不确定的,甚至可以在两次相同的运行之间变化很大。数字种类表明并行加载速度要快得多,但随着所有缓存的进行,我对时间失去了信任(从55s到7s之间的值,以及之间的所有值都有发生了......) 另外,到目前为止,我正在Linux系统上进行测试,但是生产机器正在运行带有SSD的Windows。因此,无论我在测试中得到什么结果,它们可能都是特定于操作系统的,不适用于最终用例。

我的问题是:并行加载多个文件是否有任何商定的好处?或者,是否足以让1个进程按顺序加载所有文件,因为它已经读取的速度与HDD允许的速度一样快?我不一定要寻找特定于python的答案,而是一般的文件I / O. Linux和Windows之间是否存在重大差异?

声明:
我知道这可以通过目标机器上的过度基准测试来解决。但是,一个全面的基准测试需要在此时进行大量的代码重写,并且目标机器上的访问时间(以及可能重新启动,以清除文件系统缓存)比我目前的更多。

0 个答案:

没有答案