2014-09-26 62 views
0

我正在并行运行多个进程,并且每个进程并行地读取同一个文件。它看起来像某些进程看到文件的损坏版本,如果我将进程数量增加到> 15左右。处理这种情况的推荐方式是什么?从多个进程并行读取文件

更多详细信息: 并行读取的文件实际上是一个perl脚本。多个作业是python进程,每个作业都使用不同的输入参数独立启动此perl脚本。当作业数量增加时,这些作业中的一部分会给出perl脚本语法无效的错误(这不是真的)。因此,我怀疑其中一些作业是在损坏的perl脚本中读取的。

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

+0

“它看起来像一些进程看到文件的损坏版本” - 2件事情:(1)您的同步逻辑中可能有一个错误。 (2)不太可能读取多个进程的文件会使其更快,但可能会更慢。 – 2014-09-26 00:22:05

+0

没有任何同步逻辑。正如我所说,这个文件是一个perl脚本,并行启动。所以是的,它会更快,因为每个perl进程都在独立数据集上工作 – slash90 2014-09-26 00:26:09

+0

“没有任何同步逻辑” - 存在您的问题! (我想的很多)。阅读我再次说的话。我没有说你大概复杂的处理速度不会更快,我说“它不太可能读取多个进程的文件会使它更快(即文件读取部分)” – 2014-09-26 00:27:42

回答

-1

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

如果没有异步写入,我不希望在读取期间看到损坏。你打开“r”访问文件吗?如果您仍然遇到麻烦,可能需要尝试减少读取缓冲区大小。或者调用本地的win32 API来访问文件。

祝你好运!

+0

文件未被写入。该文件是myScript.pl,在每个进程中被称为“perl myScript.pl”。大约有20个这样的过程。从你所指的意义上说,它不是'读'的 – slash90 2014-09-26 01:36:12