私はパッケージmclapply
からmulticore
(Ubuntuで)作業しており、の結果が順番に返されることを必要とする関数を書いていますmclapply(x, f)
(つまり、f(x[1]), f(x[2]), ...., f(x[n])
)。
# multicore doesn't work on Windows
require(multicore)
unlist(mclapply(
1:10,
function(x){
Sys.sleep(sample(1:5, size = 1))
identity(x)}, mc.cores = 2))
[1] 1 2 3 4 5 6 7 8 9 10
上記のコードはmclapply
、 が と同じ順序で結果を返すことを暗示しているようlapply
です。
ただし、この仮定が間違っている場合は、コードのリファクタリングに長い時間を費やす必要があるため、このパッケージ/並列計算に精通している誰かから、この仮定が正しいことを保証してもらいたいと考えています。
mclapply
指定されたオプションの引数に関係なく、常に結果を順番に返すと仮定しても安全ですか?