2

在 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 个内核运行。

4

1 回答 1

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)
于 2016-10-22T23:33:19.250 回答