首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ForEach和DoParallel会用完我所有的内存吗?

ForEach和DoParallel会用完我所有的内存吗?
EN

Stack Overflow用户
提问于 2016-06-18 05:21:35
回答 1查看 1.3K关注 0票数 1

我需要将多个形状文件加载到R会话中。目前,我正在单独加载每个形状文件。这是可行的,但它需要很长时间,并且只使用我可用CPU的15%。最近,我尝试使用ForEach和DoParallel加载形状文件:

代码语言:javascript
复制
require(foreach)
require(doParallel)
require(rgdal)
files <- c(
    "AHVENANMAA/AHVENANMAA", 
    "ETELA-KARJALA/ETELA-KARJALA", 
    "ETELA-POHJANMAA/ETELA-POHJANMAA_1", 
    "ETELA-POHJANMAA/ETELA-POHJANMAA_2", 
    "ETELA-SAVO/ETELA-SAVO_1"
)
registerDoParallel(cores = 8)
listOfCurrentProvinces <- (
    foreach(
        x = files, 
        .packages = "rgdal", 
        .inorder = FALSE
    ) %dopar% 
        readOGR(x, layer = "DR_LINKKI")
)

这个方法很有效,而且非常快(它使用了我的CPU的100% )。然而,它使用了太多的内存,特别是当我重复这个过程很多次的时候。有没有什么方法可以使用ForEach和DoParallel而不会导致如此严重的内存占用?我的机器有8个处理器(4个物理处理器和4个逻辑处理器),并有16 GB的RAM。

EN

回答 1

Stack Overflow用户

发布于 2016-06-18 07:02:34

我做了几件似乎有帮助的事情。

1)只使用registerDoParallel命令注册一次核数。

2)每次迭代后使用gc()

在我实现这些更改之前,我的记忆力只在4次(共21次)迭代后就爆炸了。现在,我已经完成了6次迭代,RAM使用率达到了50%。可用RAM的大小在大约15分钟内保持不变。

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

https://stackoverflow.com/questions/37890547

复制
相关文章

相似问题

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