Parallel processing 从多个进程并行读取文件

Parallel processing 从多个进程并行读取文件,parallel-processing,filesystems,Parallel Processing,Filesystems,我并行运行多个进程,每个进程并行读取同一个文件。如果我将进程数增加到>15左右,某些进程可能会看到文件的损坏版本。处理这种情况的推荐方法是什么 更多详情: 并行读取的文件实际上是一个perl脚本。多个作业是python进程,每个作业都使用不同的输入参数独立地启动此perl脚本。当作业数量增加时,这些作业中的一些作业会出现错误,即perl脚本的语法无效,这是不正确的。因此,我怀疑这些作业中有一些是在perl脚本的损坏版本中读取的 我在32core机器上运行所有这些操作。如果任何进程也在写入文件,那

我并行运行多个进程,每个进程并行读取同一个文件。如果我将进程数增加到>15左右,某些进程可能会看到文件的损坏版本。处理这种情况的推荐方法是什么

更多详情: 并行读取的文件实际上是一个perl脚本。多个作业是python进程,每个作业都使用不同的输入参数独立地启动此perl脚本。当作业数量增加时,这些作业中的一些作业会出现错误,即perl脚本的语法无效,这是不正确的。因此,我怀疑这些作业中有一些是在perl脚本的损坏版本中读取的


我在32core机器上运行所有这些操作。

如果任何进程也在写入文件,那么您需要强制执行一些同步,例如使用全局命名的互斥

如果没有异步写入,我就不希望在读取过程中看到损坏。您正在使用r访问权限打开文件吗?如果您仍然遇到问题,那么减少读取缓冲区大小可能值得一试。或者调用本机win32 API进行文件访问


祝你好运

看起来有些进程看到了文件的损坏版本-2件事:1您的同步逻辑可能有一个bug。2读取一个包含多个进程的文件不太可能使它更快,也可能更慢。根本没有同步逻辑。正如我所说,这个文件是一个并行启动的perl脚本。因此,是的,它会更快,因为每个perl进程都在一个独立的数据集上工作——没有任何同步逻辑——这是您的问题!我也这么想。再读一遍我说的话。我并没有说您可能的复杂处理不会更快,我说用多个进程读取文件不太可能使它更快,即文件读取部分我对并行读取文件的问题并不太熟悉。你能再多解释一下吗?为什么只有并行读取的数量很高(即10+)时才会出现问题?文件没有写入。该文件是myScript.pl,在每个进程中被称为“perl myScript.pl”。大约有20个这样的过程。它不是你所指的那种意义上的“阅读”