将来指定多流程计划的惯用的灵活方式是什么?

时间:2019-01-23 21:32:13

标签: r parallel-processing r-future

我刚遇到R包furrr和将来。我很乐意使用它们来编写灵活的代码,如果运行Windows或OSX的计算机上可用,它将使用多个内核。我希望“可用”内核的默认数量是parallel::detectCores()-1,而不是detectCores().,似乎plan(multiprocess)是简化的习惯用法,几乎可以做到这一点,但是默认情况下使用机器上的所有内核。我遇到了更明确的方法来指定"plan"。大部分使用plan(multiprocess)的默认行为的惯用方式是什么,又将内核数限制为比detectCores()返回的值少1个?

编辑 基于上述@HernikB的评论,我相信对此问题的合理答案应该与options(future.plan="multiprocess",mc.cores = parallel::detectCores() - 1L)相似。

编辑 我发现这种方法在可能的情况下经常不使用多进程计划(或至少不与future_map_dfr并行)。相比之下

nc<-detectCores()-1 plan(strategy=multiprocess, workers=nc)

似乎可以并行进行。悬而未决的问题。

1 个答案:

答案 0 :(得分:0)

看看?future::multiprocess。您可以这样做:

plan(multiprocess(workers = 3))

如果您的compute.r上有4个内核。