我执行以下操作将一堆模型发送到计算服务器。
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 }
未来的作者在这里: 如果你对远程计算机上的单独R 进程感到满意,可以使用:
library("future")
remote_machine <- "me@localcomputeserver.de"
plan(cluster, workers = rep(remote_machine, times = 2L))
让两个远程工作人员在同一台计算机上。 这样,您可以同时拥有两个活跃的期货而不会阻塞。
仅供参考,plan(remote, ...)
基本上只是plan(cluster, persistent = TRUE, ...)
,其中"持久"意味着 R 变量在多个未来调用中在工作线程上生存; 你很少想这样做 - 所以改用cluster
。