Я только что столкнулся с пакетами R и будущими. Я хотел бы использовать их для написания гибкого кода, который будет использовать несколько ядер, если они доступны на машинах под управлением Windows или OSX. Я бы хотел, чтобы число «доступных» ядер по умолчанию было что-то вроде parallel::detectCores()-1,
, а не detectCores().
Похоже, plan(multiprocess)
- это упрощенный идиоматичный способ почти этого сделать, но по умолчанию используются все ядра на машина. Я встречал более явные способы указания "плана" . Каков идиоматический способ использовать в основном поведение по умолчанию plan(multiprocess)
, но также ограничить число ядер на 1 меньше, чем то, что вернуло бы detectCores()
?
EDIT
Исходя из комментария @HernikB выше, я считаю, что разумный ответ на этот вопрос будет иметь вид options(future.plan="multiprocess",mc.cores = parallel::detectCores() - 1L)
.
EDIT
Я обнаружил, что этот метод часто не использует многопроцессный план (или, по крайней мере, не идет параллельно с future_map_dfr
), когда кажется, что это возможно. В отличие от
nc<-detectCores()-1
plan(strategy=multiprocess, workers=nc)
, кажется, работает параллельно. Оставив вопрос без ответа.