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