1

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

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

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

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

似乎让它并行。留下这个问题没有答案。

4

1 回答 1

0

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

plan(multiprocess(workers = 3))

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

于 2019-01-23T23:24:15.203 回答