我认为这是 R 能力的极端,但这里有......
我在 R 中进行了一些繁重的处理,其中我编写了一个函数,该函数通过一次调用完成所有腿部工作。但是,我想线程化或使用多个内核。
我查看了 Parallel 包,该包已被弃用。理想情况下,我希望将函数称为新线程。
我了解并行计算的复杂性,并且它不是世界上最简单的事情,但如果有人知道一些有用的软件包或我忽略的任何东西,我将不胜感激。
干杯
我认为这是 R 能力的极端,但这里有......
我在 R 中进行了一些繁重的处理,其中我编写了一个函数,该函数通过一次调用完成所有腿部工作。但是,我想线程化或使用多个内核。
我查看了 Parallel 包,该包已被弃用。理想情况下,我希望将函数称为新线程。
我了解并行计算的复杂性,并且它不是世界上最简单的事情,但如果有人知道一些有用的软件包或我忽略的任何东西,我将不胜感激。
干杯
该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)