Rstudio - возможно ли запустить код в фоновом режиме
Вопрос по поводу RStudio. Предположим, я запускаю код в консоли:
> code1()
Предположим, что code1()
ничего не печатает на консоли, но code1()
выше занимает час. Я хочу работать над чем-то еще, пока я жду code1()
. Является ли это возможным? Есть ли такая функция, как runInBackground
которую я могу использовать следующим образом
> runInBackground(code1())
> code2()
Альтернативы - запуск двух RStudios или написание командного файла, который использует Rscript
для запуска code1()
, но я хотел знать, есть ли что-то более простое, что я могу сделать, не выходя из консоли RStudio. Я попытался просмотреть справочную документацию R, но ничего не нашел (или, может быть, я не использовал правильные ключевые слова).
Ответы
Ответ 1
Будущий пакет (я автор) обеспечивает это:
library("future")
plan(multiprocess)
future(code1())
code2()
К вашему сведению, если вы используете
plan(cluster, workers = c("n1", "n3", "remote.server.org"))
затем выражение будущего решается на одной из этих машин. С помощью
plan(future.BatchJobs::batchjobs_slurm)
приведет к его разрешению через очередь планировщика заданий Slurm.
Этот вопрос тесно связан с выполнением асинхронной функции в R
Ответ 2
Вы всегда можете сделать это, что не идеально, но работает для большинства целей:
shell(cmd = 'Rscript.exe some_script.R', wait=FALSE)
Ответ 3
Функция mcparallel() в параллельном пакете поможет вам, если вы работаете в Linux, то есть...
library(parallel)
Job1 = mcparallel(code1())
JobResult1 = mccollect(Job1)
Ответ 4
RStudio начиная с версии 1.2 предоставляет эту функцию. Чтобы запустить скрипт в фоновом режиме, выберите "Начать работу" на панели "Задания". У вас также есть возможность скопировать фоновый результат работы в рабочую среду.