foreach 循环中没有收到标准输出

No standard output received inside foreach loop

我正在使用 doParallelforeach 进行相当长的并行处理。在我看到的大多数例子中,计算密集型但输入轻的代码被送入循环,我使用 foreach 来协调多个大型独立数据集的同时处理。所以在循环中,我使用元数据从磁盘读取文件,对其进行操作,然后写回。

在我将此操作转换为 foreach 循环之前,我使用 messages() 写出调试消息。然而,由于我已经切换到使用 foreach%dopar%,我注意到循环 'goes dark': 它正在做它应该做的事情,但我没有收到任何输出。 (我应该提到这个循环被写入了我从 shell 和 Rscript 调用的脚本中。)

我猜这与 doParallel 分拆其他线程这一事实有关——也许这些线程不再知道将标准输出转储到哪里?想法?

如果要从并行 foreach 循环输出,只需使用选项 outfilemakeCluster(no_cores, outfile = "").