将来指定多进程计划的惯用、灵活的方法是什么?

What is the idiomatic, flexible way to specify mutliprocess plan in future?

我刚遇到 R 包 furrr 和 future。我很乐意使用它们来编写灵活的代码,如果机器 运行 Windows 或 OSX 上可用,这些代码将使用多核。我希望 "available" 个核心的默认数量类似于 parallel::detectCores()-1, 而不是 detectCores(). 似乎 plan(multiprocess) 是几乎可以做到这一点的流线型惯用方式,但它默认使用机器上的所有内核。我遇到过更明确的方法来指定 "plan"。主要使用 plan(multiprocess) 的默认行为但同时将核心数量限制为比 detectCores() 将 return 少 1 个的惯用方法是什么?

编辑 根据@HernikB 的上述评论,我认为这个问题的合理答案应该是 options(future.plan="multiprocess",mc.cores = parallel::detectCores() - 1L)

编辑 我发现这种方法似乎可以时经常不使用多进程计划(或者至少不与 future_map_dfr 并行)。相比之下

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

似乎可以同时进行。将问题悬而未决。

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

plan(multiprocess(workers = 3))

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