我有一个非常大的数据集(360个样本中有17,000个特征),为此我需要计算一些多样性指数。这需要非常长的时间(单个样本需要3-4天),所以我想平行进行。我大约有50个cpus,因此每个cpu应该依次执行约7个样本(列)。
我可以运行:
df <- data.frame(matrix(sample.int(1000, 2000*360, TRUE), 2000, 360))
dflist <- as.list(df)
library(parallel)
cl <- makeCluster(detectCores()-1)
clusterExport(cl, "dflist")
results <- parLapply(cl, df.list, function(x) range(x)) #range as a wild card
,这将产生所需的输出,但是我不知道这是否真的有效,如我认为的那样。
所以,我的问题是:
一旦完成当前任务,此命令是否允许每个进程拾取dflist
中的下一个空闲对象?
还是我必须在dflist
中为每个进程分配一组特定的对象?