Будущее ожидает завершения предыдущего будущего при отправке на удаленный

Я делаю следующее, чтобы отправить кучу моделей на вычислительный сервер.

Будущее ожидает первого вызова для переноса, прежде чем следующий будет отправлен. Как я могу сообщить будущему, что он может отправлять несколько заданий одновременно на удаленное устройство?

Это вполне возможно, так как я могу отправить несколько заданий на один и тот же пульт из разных локальных 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 вместо.

Другие вопросы по тегам