我使用多核系统运行R模拟。我监控的模拟结果是长度为900的向量。我的计划是在每个模拟结束后将此向量(行方式)附加到文本文件中(使用write.table)。我的模拟从1:1000开始。当我在我的笔记本电脑上工作时,结果很好,因为工作是连续的。当我在集群中工作时,模拟会被分开,并且首先要写入的人可能存在冲突。我声称的原因是我甚至得到了我的文本文件的第一列甚至不可能的值(此列用于存储模拟索引)。如果您需要我可以附加的示例代码。
答案 0 :(得分:1)
无法使用支持顺序的并行线程写入文本文件。每个线程都有自己的缓冲区,并且在适合写入时没有任何指示,因为没有交叉通信。所以会发生什么是他们都会同时尝试同一个文件,即使在另一个线程的写入的中间,这也是你在第一列中获得不可能的值的原因。
解决方案是为每个线程写入单独的文件,或者将值作为多线程应用循环的输出返回。然后按顺序将结果组合在一起。