我刚遇到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)
似乎可以并行进行。悬而未决的问题。
答案 0 :(得分:0)
看看?future::multiprocess
。您可以这样做:
plan(multiprocess(workers = 3))
如果您的compute.r上有4个内核。