Подтвердить что ты не робот

Rstudio - возможно ли запустить код в фоновом режиме

Вопрос по поводу RStudio. Предположим, я запускаю код в консоли:

> code1()

Предположим, что code1() ничего не печатает на консоли, но code1() выше занимает час. Я хочу работать над чем-то еще, пока я жду code1(). Является ли это возможным? Есть ли такая функция, как runInBackground которую я могу использовать следующим образом

> runInBackground(code1())
> code2()

Альтернативы - запуск двух RStudios или написание командного файла, который использует Rscript для запуска code1(), но я хотел знать, есть ли что-то более простое, что я могу сделать, не выходя из консоли RStudio. Я попытался просмотреть справочную документацию R, но ничего не нашел (или, может быть, я не использовал правильные ключевые слова).

4b9b3361

Ответ 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 предоставляет эту функцию. Чтобы запустить скрипт в фоновом режиме, выберите "Начать работу" на панели "Задания". У вас также есть возможность скопировать фоновый результат работы в рабочую среду.