8

我认为这是 R 能力的极端,但这里有......

我在 R 中进行了一些繁重的处理,其中我编写了一个函数,该函数通过一次调用完成所有腿部工作。但是,我想线程化或使用多个内核。

我查看了 Parallel 包,该包已被弃用。理想情况下,我希望将函数称为新线程。

我了解并行计算的复杂性,并且它不是世界上最简单的事情,但如果有人知道一些有用的软件包或我忽略的任何东西,我将不胜感激。

干杯

4

1 回答 1

20

multicore软件包已弃用:不是parallel. 查看函数的文档:这是在包mclapply中并行执行函数的最简单方法。parallel它非常类似于lapply但有一些新的可选参数:

library(parallel)
myfun <- function(i) { Sys.sleep(1); i }
mclapply(1:8, myfun, mc.cores=4)

请注意,它mclapply使用进程而不是线程,并且不支持在 Windows 上并行执行。parLapply对于 Windows ,您应该查看parallel. 它也类似于lapply,但需要一个集群对象作为第一个参数。这是相同的示例,但这基本上适用于任何平台:

library(parallel)
cl <- makePSOCKcluster(4)
myfun <- function(i) { Sys.sleep(1); i }
parLapply(cl, 1:8, myfun)
stopCluster(cl)
于 2013-06-11T21:23:53.207 回答