Будущее ожидает завершения предыдущего будущего при отправке на удаленный
Я делаю следующее, чтобы отправить кучу моделей на вычислительный сервер.
Будущее ожидает первого вызова для переноса, прежде чем следующий будет отправлен. Как я могу сообщить будущему, что он может отправлять несколько заданий одновременно на удаленное устройство?
Это вполне возможно, так как я могу отправить несколько заданий на один и тот же пульт из разных локальных 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 }
1 ответ
Автор будущего здесь: Если вы довольны отдельными процессами R на удаленной машине, вы можете использовать:
library("future")
remote_machine <- "me@localcomputeserver.de"
plan(cluster, workers = rep(remote_machine, times = 2L))
чтобы получить двух удаленных работников на одной машине. Таким образом, вы можете иметь два активных фьючерса одновременно без блокировки.
FYI, plan(remote, ...)
в основном просто plan(cluster, persistent = TRUE, ...)
где "постоянный" означает, что переменные R выживают на рабочем месте в течение нескольких будущих вызовов; Вы редко хотите это сделать - так что используйте cluster
вместо.