我正在通过在一台机器上运行工作者和在另一台机器上运行主/服务器来测试 doRedis 包。我的主人的代码是这样的:
#Register ...
r <- foreach(a=1:numreps, .export(...)) %dopar% {
train <- func1(..)
best <- func2(...)
weights <- func3(...)
return ...
}
在每个函数中,都会访问一个全局变量,但不会对其进行修改。我已经在 foreach 循环的 .export 部分导出了全局变量,但是每当我运行代码时,都会出现一个错误,指出找不到该变量。有趣的是,当我的所有工作人员都在一台机器上时,代码可以工作,但当我有一个“外部”工作人员时会崩溃。任何想法为什么会发生此错误,以及如何纠正它?
谢谢!
更新:我在这里有一些代码的要点:https ://gist.github.com/liangricha/fbf29094474b67333c3b
UPDATE2:我问了另一个与doRedis相关的问题:“是否有可能允许每台工作机器利用其所有核心?
@Steve Weston 回应:“每个核心启动一个 redis 工作者通常会充分利用机器。”