Я работаю с 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
всегда возвращает свои результаты по порядку, независимо от необязательных аргументов, которые он задает?