首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能使R调查包的“`svyby`”函数multicore=参数在windows上工作?

是否有可能使R调查包的“`svyby`”函数multicore=参数在windows上工作?
EN

Stack Overflow用户
提问于 2014-07-14 13:03:08
回答 1查看 495关注 0票数 4

能够在窗口上执行多线程是很棒的,但是这个问题可能比我想象的要困难。:(

survey:::svyby.default内部有一个块,它是lapplymclapply,这取决于multicore=TRUE和您的操作系统。无论如何,windows用户都会被迫进入lapply循环,我想知道是否有任何方法可以替代mclapply路径。加快计算速度。

我对并行处理的内部不太了解,但我做了一些实验,看看是否有任何一个窗口--可接受的替代方案--能起作用。首先,我尝试用

代码语言:javascript
复制
mclapply <- 
    function( X , FUN , ... ){ 
        clusterApply( 
            x = X , 
            fun = FUN , 
            cl = makeCluster( detectCores() ) , ... ) 
    }

接下来,我使用fixInNamespace( svyby.default , "survey" )删除行if (multicore) parallel:::closeAll()

但那只会让我觉得

代码语言:javascript
复制
> svyby(~api99, ~stype, dclus1, svymean , multicore=TRUE )
Error in checkForRemoteErrors(val) :
  3 nodes produced errors; first error: object 'svymean' not found
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-14 13:03:08

引用R survey软件包的作者Thomas博士的话回应我的询问--

不是的。这种并行化方法依赖于分叉,而Windows不支持分叉。 有必要重写它以使用clusterApply(),而且我非常肯定通信开销会占用速度增益。通过分叉,子进程可以免费获得父进程数据的副本--所有这些都是由虚拟<->物理内存转换硬件完成的--但是使用集群方法,R必须显式地将数据发送到子进程。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24737166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档