我正在尝试使用 DoMC 构建一个并行的 foreach 循环,但是发生了一些奇怪的行为。代码看起来像这样
for (file in files) {
do stuff
for (extra in extras) {
do some heavy stuff
}
}
- 当我加载 DoMC 或 DoParallel 时,循环开始使用一个核心,但在第二个循环中它使用所有 4 个核心
- 当我将 for 循环切换到 foreach %do% 时,我得到了完全相同的行为。
- 如果我将 foreach 用于外部循环并将内部作为 for 循环,则脚本会变慢。它从 4 个并行作业开始,然后它们都停止并逐渐减少 CPU 使用率。
我想要的是并行化顶部循环而不是内部第二个循环。有谁知道发生了什么?我过去使用过 foreach 和 doMC,以前从未遇到过这个问题。