我正在使用doSMPR-package foreach loops.
我已经指定verbose=TRUE作为可选参数foreach报告对于故障排除非常有用.我想这是真的:它非常有用......如果我们理解它意味着什么.
能否请您解释一下迭代后返回的以下消息.
got chunk of 1 result(s) starting at # 1
numValues: 2, numResults: 1, stopped: TRUE
returning status FALSE
Run Code Online (Sandbox Code Playgroud)
编辑
根据徐旺的要求,这是一个最低限度的工作实例.
library(doSMP)
w <- startWorkers(2)
registerDoSMP(w)
root <- foreach(i=1:2, .verbose=TRUE) %dopar%
{
sqrt(i)
}
stopWorkers(w)
Run Code Online (Sandbox Code Playgroud)
每次迭代后的消息由 'foreach' 包生成。我分析了包代码(主要是文件“foreach.R”)并做了一个稍微修改的演示,其中我使用 %do% 而不是 %dopar%。阅读日志后的输出说明。
--- 日志开始 ---
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
Run Code Online (Sandbox Code Playgroud)
--- 日志结束 ---
“numValues”是启动的任务数。
“numResults”是收到的结果数。
"stopped: FALSE" (或"TRUE" ) 仅表示 foreach 是否已完成所有迭代。
“返回状态 FALSE”(或“TRUE”)显示内部(到 'foreach' 包)函数“complete()”的输出,该函数检查是否所有工作都已完成。根据后端,可能会显示或跳过消息“返回状态为真”(doParallel 后端没有,而 doRedis 后端确实在我的特定情况下打印了“真”消息)。
| 归档时间: |
|
| 查看次数: |
3563 次 |
| 最近记录: |