R-foreach循环,verbose=TRUE

R-foreach循环,verbose=TRUE,r,foreach,R,Foreach,我正在使用doSMPR包以及foreach循环 我指定了verbose=TRUE作为foreach的可选参数,据报道,该参数对于故障排除非常有用。我想这是真的:它非常有用。。。如果我们理解它的意思 你能给我解释一下迭代后返回的消息吗 got chunk of 1 result(s) starting at # 1 numValues: 2, numResults: 1, stopped: TRUE returning status FALSE 编辑 按照徐旺的要求,下面是一个最低限度的工作示例

我正在使用
doSMP
R包以及
foreach循环

我指定了
verbose=TRUE
作为
foreach
的可选参数,据报道,该参数对于故障排除非常有用。我想这是真的:它非常有用。。。如果我们理解它的意思

你能给我解释一下迭代后返回的消息吗

got chunk of 1 result(s) starting at # 1
numValues: 2, numResults: 1, stopped: TRUE
returning status FALSE
编辑

按照徐旺的要求,下面是一个最低限度的工作示例

library(doSMP)

w <- startWorkers(2)
registerDoSMP(w)

root <- foreach(i=1:2, .verbose=TRUE) %dopar%
{
  sqrt(i)
}

stopWorkers(w)
库(doSMP)

w每次迭代后的消息由“foreach”包生成。我分析了包代码(主要是文件“foreach.R”),并做了一个稍微修改的演示,其中使用了%do%而不是%dopar%。阅读日志后的输出说明

---日志启动---

---原木端---

“numValues”是启动的任务数。
“numResults”是收到的结果数。
“stopped:FALSE”(或“TRUE”)仅表示foreach是否已完成所有迭代。

“returning status FALSE”(或“TRUE”)显示内部(到“foreach”包)函数“complete()”的输出,该函数检查所有工作是否已完成。根据后端的不同,可能会显示或跳过消息“returning status TRUE”(返回状态为TRUE)(doParallel后端没有,doRedis后端在我的特定情况下打印了“TRUE”消息)。

最好直接与foreach软件包开发人员联系。当然,软件包文档不是很好。@Cart Witthoft:好的。。谢谢你能把你的代码和数据贴出来吗?或者仅仅是一个最起码的例子?@Marco,你听到回音了吗?如果是这样的话,你能发布答案吗?@Solomon:我想doSMP已经不再使用了。我改用doMC。
foreach(i=1:2, .verbose=TRUE) %do% { sqrt(i) }
evaluation # 1:
$i
[1] 1

result of evaluating expression:
[1] 1
got results for task 1
numValues: 1, numResults: 1, stopped: FALSE
returning status FALSE
evaluation # 2:
$i
[1] 2

result of evaluating expression:
[1] 1.414214
got results for task 2
numValues: 2, numResults: 2, stopped: FALSE
returning status FALSE
numValues: 2, numResults: 2, stopped: TRUE
calling combine function
evaluating call object to combine results:
  fun(accum, result.1, result.2)
[[1]]
[1] 1

[[2]]
[1] 1.414214