这里是未来框架的作者。此行为是设计使然。
您的主 R 会话有一定数量的可用工作人员。工人的数量取决于您制定的未来计划。您可以随时通过调用nbrOfWorkers() 查看设置的工人数量。在您的情况下,您有四个远程工作人员,这意味着 nbrOfWorkers() 返回 4。
您可以随时激活此数量的期货 (= nbrOfWorkers()) 而不会被阻止。当你试图再创造一个未来时,没有更多的工人可以承担它。此时,唯一的选择就是阻止。
现在,您可能会问:当远程工作人员都很忙时,我该如何使用我的本地机器?
实现这一目标的最简单方法是在远程工作人员组合中添加一名本地工作人员。例如,如果您允许自己在本地机器上使用两个工人,您可以这样做:
library(future)
remote_workers <- makeClusterPSOCK(c("n1.remote.org", "n2.remote.org"))
local_workers <- makeClusterPSOCK(2)
plan(cluster, workers = c(remote_workers, local_workers))
甚至只是
library(future)
remote_workers <- c("n1.remote.org", "n2.remote.org")
local_workers <- rep("localhost", times = 2)
plan(cluster, workers = c(remote_workers, local_workers))