Каков идиоматичный, гибкий способ определения плана многопроцессорности в будущем?

Я только что столкнулся с R пакетами и будущими. Я хотел бы использовать их для написания гибкого кода, который будет использовать несколько ядер, если они доступны на машинах под управлением Windows или OSX. Я хотел бы, чтобы по умолчанию число "доступных" ядер было чем-то вроде parallel::detectCores()-1, скорее, чем detectCores(). Похоже на plan(multiprocess) это упрощенный идиоматичный способ почти сделать это, но по умолчанию используются все ядра машины. Я встречал более явные способы указать "план". Какой идиоматический способ использовать в основном поведение по умолчанию plan(multiprocess), но также ограничить количество ядер до 1 меньше, чем detectCores() вернется?

РЕДАКТИРОВАТЬ На основе комментария @HernikB выше, я считаю, что разумный ответ на этот вопрос будет иметь вид options(future.plan="multiprocess",mc.cores = parallel::detectCores() - 1L),

РЕДАКТИРОВАТЬ Я обнаружил, что этот метод часто не использует многопроцессный план (или, по крайней мере, не идет параллельно с future_map_dfr) когда кажется, что мог. В отличие от

nc<-detectCores()-1 plan(strategy=multiprocess, workers=nc)

кажется, что это происходит параллельно. Оставив вопрос без ответа.

1 ответ

Взгляни на ?future::multiprocess, Ты можешь сделать:

plan(multiprocess(workers = 3))

Если у вас есть 4 ядра на вашем compute.r.

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