使用 foreach 和 doRedis 时,doRedis 工作人员会等到所有作业都到达 redis 服务器后再开始处理。是否可以在所有预处理完成之前让它们开始?
我正在使用一个运行良好的迭代器 - 预处理“及时”发生,并且随着迭代器的运行,作业数据开始到达服务器。不过,我似乎无法利用这种行为,因为工作人员只是等到所有工作都上传完毕。
示例代码:
library(foreach)
library(doRedis)
registerDoRedis("worklist", "0.0.0.0")
foreach (var = complex.iter(1:1E6)) %dopar% {
process.function(var)
}
在这个例子complex.iter
中需要一段时间,并且有很多元素需要迭代。process.function()
因此,如果工作人员在所有预处理完成之前开始运行,那就太好了。不幸的是,他们似乎要等到complex.iter
在所有元素上运行。
我已经设置了.inorder=F
。
关于如何实现这种期望行为的任何建议?谢谢。