来自包doBArallel的选项"核心"在Windows上无用吗?

F. *_*ivé 3 r parallel-foreach doparallel

在Linux计算机上,以下doParallel的小插曲,我使用doParallel::registerDoParallel(),然后我用options(cores = N)哪里N是核心我想使用的数量foreach.

我可以foreach::getDoParWorkers()在更改选项时验证cores,它会自动更改使用的核心数foreach.

然而,在Windows 10(最新版本的R和软件包)上,此选项似乎没有任何影响,因为更改其值不会更改foreach::getDoParWorkers()(在3调用时初始化的值doParallel::registerDoParallel()).

可重复的例子:

doParallel::registerDoParallel()
options(cores = 1)
foreach::getDoParWorkers()
options(cores = 2)
foreach::getDoParWorkers()
options(cores = 4)
foreach::getDoParWorkers()
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?它不适用于Windows吗?

编辑:我知道如何以不同方式注册并行后端.目标是使用doParallel::registerDoParallel()一次注册(在加载我的包时),然后使用一个选项来更改使用的内核数量.这就是为什么我希望它也适用于Windows.

F. *_*ivé 7

来自包装doParallel,Rich Calaway的维护者的答案:

Windows不支持分叉,这是并行(和doParallel)包使用"cores"参数的原因.因此,在Windows上,所有"核心"参数都设置为1.要在Windows上使用doParallel使用多个核心,请使用makeCluster创建多个工作集群cl,然后使用registerDoParallel(cl).

所以这不是一个错误,而是一个非Windows功能,这是一个遗憾.