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
ました。
この望ましい動作を達成する方法に関する提案はありますか? ありがとう。