2. Предыдущие уроки
•циклы for, while и repeat
•функции семейства apply
•пакет purrr
•основы многопоточности в R
•многопоточность с помощью пакета future
3. Явное и неявное объявление фьючерсов
Неявное объявление:
v %<-% { expr }
Явное объявление:
f <- future({ expr })
v <- value(f)
4. Аргументы в функции future
• expr – выражение, которые будет вычислено;
• envir – окружение, из которого необходимо экспортировать глобальные объекты;
• lazy – управляет ленивым вычисленим, т.е. вы можете указать TRUE, в таком случае
фьючерс начнёт вычисляться, только когда в коде будет прямое оразение к его значению,
по умолчанию FALSE;
• seed – позволяет установить во всех параллельных потоках стартовое значение генератора
случайных чисел;
• packages– позволяет указать, какие пакеты необходимо подключить для выполнения
вычислений фьючерса;
5. Стратегии выполнения кода в future
Последовательное выполнение:
Название схемы Поддержка операционных систем Описание
sequential все Выполняется последовательно и в текущем процессе R
Параллельное выполнение:
Название схемы Поддержка операционных систем Описание
multisession все
Выполняется параллельно в фоновых сеансах R (на
текущей машине), основной сеанс R не блокируется
multicore
Не поддерживается на Windows и в
RStudio
Разветвленные процессы R (на текущей машине)
cluster все
Внешние сеансы R на текущих, локальных и / или
удаленных машинах, аналогично тому, как это
реализовано в пакете parallel
remote все Доступ к удаленным сеансам R
7. Опции future
• future.plan – установка дефолтной схемы вычислений;
• future.globals.maxSize – ограничение максимального объёма экспортируемых из
глобального окружения объектов;
• future.globals.onReference – позволяет управлять поведением future при экспорте
ссылочных объектов, которые нельзя экспортировать, например объектов соединения с
базами данных;
• future.wait.timeout – максимальное время ожидания свободного узла;
• future.wait.interval – начальный интервал паузы, между опросами статуса узлов, в поисках
свободного;
• future.wait.alpha – повышающий коэффициент интервала между опросами узлов.
8. Переменные среды future
Опция Переменная среды
future.globals.maxSize R_FUTURE_GLOBALS_MAXSIZE
future.plan R_FUTURE_PLAN
future.globals.onReference R_FUTURE_GLOBALS_ONREFERENCE
future.wait.timeout R_FUTURE_WAIT_TIMEOUT
… R_...
9. Другие пакеты входящие в futureverse
• future – основной пакет futureverse.
• future.apply – параллельная реализация семейства apply;
• furrr – параллельная реализация purrr;
• doFuture – бекенд для foreach;
• progressr – позволяет использовать прогрессбары при параллельных вычислениях;
и другие: future.batchtools, future.callr, future.tests, parallelly, …