我需要将多个形状文件加载到我的 R 会话中。目前,我正在单独加载每个形状文件。这可行,但需要很长时间,并且只使用了我可用 CPU 的 15%。最近,我尝试使用 ForEach 和 DoParallel 加载形状文件:
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")
)
这种方法有效并且非常快(它使用了我 100% 的 CPU)。但是,它占用了太多内存,尤其是当我多次重复该过程时。有什么方法可以使用 ForEach 和 DoParallel 而不会造成如此大的内存影响?我的机器有 8 个处理器(4 个物理处理器和 4 个逻辑处理器)并且有 16 GB 的 RAM。