我正在开发一个项目(用python 2.7
编写),我处理了几千个图像,每个图像的大小约为2.7MB。目前,工作流程如下:
multiprocessing.Manager().Queue()
N
进程使用队列中的映像进行预处理并将结果存储在第二个队列中到目前为止,这种方法运行良好,我可以产生足够的预处理过程,因此从磁盘加载成为瓶颈。
为了娱乐和学习,我正在尝试使用2个进程,每个进程从磁盘加载一半文件并将它们放在同一队列中。我想看看是否能让我从磁盘上加载更快的时间 但是,由于我的设置(带有ZFS和各种缓存层的硬盘驱动器),这个"优化的结果"是不确定的,甚至可以在两次相同的运行之间变化很大。数字种类表明并行加载速度要快得多,但随着所有缓存的进行,我对时间失去了信任(从55s到7s之间的值,以及之间的所有值都有发生了......) 另外,到目前为止,我正在Linux系统上进行测试,但是生产机器正在运行带有SSD的Windows。因此,无论我在测试中得到什么结果,它们可能都是特定于操作系统的,不适用于最终用例。
我的问题是:并行加载多个文件是否有任何商定的好处?或者,是否足以让1个进程按顺序加载所有文件,因为它已经读取的速度与HDD允许的速度一样快?我不一定要寻找特定于python的答案,而是一般的文件I / O. Linux和Windows之间是否存在重大差异?
声明:
我知道这可以通过目标机器上的过度基准测试来解决。但是,一个全面的基准测试需要在此时进行大量的代码重写,并且目标机器上的访问时间(以及可能重新启动,以清除文件系统缓存)比我目前的更多。