foreach 循环中没有收到标准输出
No standard output received inside foreach loop
我正在使用 doParallel
与 foreach
进行相当长的并行处理。在我看到的大多数例子中,计算密集型但输入轻的代码被送入循环,我使用 foreach
来协调多个大型独立数据集的同时处理。所以在循环中,我使用元数据从磁盘读取文件,对其进行操作,然后写回。
在我将此操作转换为 foreach 循环之前,我使用 messages()
写出调试消息。然而,由于我已经切换到使用 foreach
和 %dopar%
,我注意到循环 'goes dark': 它正在做它应该做的事情,但我没有收到任何输出。 (我应该提到这个循环被写入了我从 shell 和 Rscript
调用的脚本中。)
我猜这与 doParallel
分拆其他线程这一事实有关——也许这些线程不再知道将标准输出转储到哪里?想法?
如果要从并行 foreach 循环输出,只需使用选项 outfile
:makeCluster(no_cores, outfile = "")
.
我正在使用 doParallel
与 foreach
进行相当长的并行处理。在我看到的大多数例子中,计算密集型但输入轻的代码被送入循环,我使用 foreach
来协调多个大型独立数据集的同时处理。所以在循环中,我使用元数据从磁盘读取文件,对其进行操作,然后写回。
在我将此操作转换为 foreach 循环之前,我使用 messages()
写出调试消息。然而,由于我已经切换到使用 foreach
和 %dopar%
,我注意到循环 'goes dark': 它正在做它应该做的事情,但我没有收到任何输出。 (我应该提到这个循环被写入了我从 shell 和 Rscript
调用的脚本中。)
我猜这与 doParallel
分拆其他线程这一事实有关——也许这些线程不再知道将标准输出转储到哪里?想法?
如果要从并行 foreach 循环输出,只需使用选项 outfile
:makeCluster(no_cores, outfile = "")
.