我正在使用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
无论给出什么可选参数,它总是按顺序返回结果是否安全?