0

doSNOW考虑以下在带有包的 Windows 操作系统上运行的代码:

result.dt <- foreach(j = 1:nrow(keys), 
                    .combine = function(...) rbindlist(list(...)), 
                    .packages = c('data.table'), 
                    .multicombine = TRUE) %dopar% {
    data.select <- data[keys[j], on = colnames(keys)]
    foo(data.select)
}

keys有些data.table有大约 2000 行,foo是一个运行相当长的时间(10s - 3m)并返回data.table单行的函数。

当我打开时.verbose = TRUE,我可以看到foo不同内核的功能按预期运行(比如 30m)。但是,在foreach完成所有操作后,代码又消耗了 30m(有时甚至更长)来合并 2000 data.table

需要注意的另一件事是,当 时verbose = TRUE,它总是显示,numValues: .., numResults: .., stopped: FALSE即使它是结束时foreach。我期待看到stopped: TRUE

任何想法可能是错误的以及如何提高性能?

4

0 回答 0