在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
时重用第一个{{1}}的线程,以便整个脚本始终使用3个核心运行。
答案 0 :(得分: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)