未来等待以前的未来在发送到远程时结束

future waits for previous future to conclude when sending to remote

我执行以下操作将一堆模型发送到计算服务器。

future 在发送下一个调用之前等待第一个调用换行。我如何告诉 Future 它可以同时向远程发送多个作业?

这显然是可能的,因为我可以从不同的本地 R 会话向同一个远程发送多个作业,或者如果我在两次调用之间再次调用 plan(login)。但是我该如何指定拓扑,这样未来就不会等待,我也不必重复调用 plan?

library(future) 
login <- tweak(remote, workers = "me@localcomputeserver.de")
plan(list(login))
bla %<-% { bla <- rnorm(1000); Sys.sleep(100); saveRDS(bla, file="bla.rds"); bla}
bla2 %<-% { bla2 <- rnorm(1000); Sys.sleep(100); saveRDS(bla2, file="bla2.rds"); bla2 }

这里是未来的作者:如果您对远程计算机上的 separate R 进程感到满意,您可以使用:

library("future")
remote_machine <- "me@localcomputeserver.de"
plan(cluster, workers = rep(remote_machine, times = 2L))

让两名远程工作者在同一台机器上工作。这样你就可以同时拥有两个活跃的期货而不会阻塞。

仅供参考,plan(remote, ...) 基本上只是 plan(cluster, persistent = TRUE, ...),其中 "persistent" 意味着 R 变量在未来的多次调用中仍然存在于 worker 上;您很少想这样做 - 所以请改用 cluster