【发布时间】:2013-11-11 18:49:28
【问题描述】:
我有一些非并行代码想要并行化。代码应该是令人尴尬的并行化,除了文件操作(写入多个文件以及写入哪个文件有点随机,并且在不同的处理器中可能相同)。使用doMC 和foreach 包,我是否必须处理文件锁定,或者它是否已经由包处理?我与doMC 无关,之所以选择它,是因为我仍然会对我的代码进行大量更改,而且它看起来很容易使用。
【问题讨论】:
-
如果你在
append模式下打开一个文本文件(例如write.table的默认模式)多个文件可以同时写入(实际上它们不是,它是连续的,但你不会' t 通常会丢失想要同时写入的写入。如果您在许多内核上同时完成大量作业,那么您可能会丢失一些结果(我发现了这个),所以我喜欢写出单个文件然后结合。 -
我应该更清楚,我正在使用
save将对象写入文件,但我什至没有想过检查help(save)以查看它是否处理了锁定。它有一个参数safe=TRUE,它写入一个临时文件,然后复制原始文件。这仍然不能完全提供锁定。我正在附加文件,所以我想用伪代码lock(file);load(file);process();save(file);unlock(file)
标签: r file-io parallel-processing domc