R параллельно с использованием библиотеки doMC: как повторно использовать ядра для последующих параллельных процессов?
При запуске следующего скрипта в R:
library(doMC)
registerDoMC(cores=3)
# First foreach
# This runs in 3 threads
foreach(i=1:3) %dopar% sqrt(i)
# Second foreach
# This add 3 threads to the previous ones (now inactive but still consuming memory), totalling 6 threads
foreach(i=1:3) %dopar% sqrt(i)
Я хотел бы знать, как повторно использовать темы первого foreach
при запуске второго, так что весь сценарий всегда выполняется с использованием 3 ядер.
1 ответ
Благодаря предложению одного из разработчиков doMC я смог найти обходной путь. Используя другую библиотеку, следующий код делает то, что я искал:
library(doParallel)
cores=makeForkCluster(3)
registerDoParallel(cores)
# First foreach
# This runs in 3 threads
foreach(i=1:3) %dopar% sqrt(i)
# Second foreach
# This reuses the previous 3 threads (total of 3 active threads)
foreach(i=1:3) %dopar% sqrt(i)