【问题标题】:file locking in R doMCR doMC中的文件锁定
【发布时间】:2013-11-11 18:49:28
【问题描述】:

我有一些非并行代码想要并行化。代码应该是令人尴尬的并行化,除了文件操作(写入多个文件以及写入哪个文件有点随机,并且在不同的处理器中可能相同)。使用doMCforeach 包,我是否必须处理文件锁定,或者它是否已经由包处理?我与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


【解决方案1】:

我还没有找到一般问题的解决方案。似乎有一个解决方案:

Is there a way to share a lock (e.g. a lock file) between R processes?

这可以被认为是重复的。

【讨论】:

    猜你喜欢
    • 2015-05-13
    • 2013-12-23
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2019-01-15
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多