我正在使用'rhdf5'软件包来读取大约5000个对象的大文件(2GB)。 我必须使用这个包,因为它似乎是唯一一个支持bit64。
问题如下,读取所有这些对象非常耗时:
library(rhdf5)
library(bit64)
library(parallel)
groups = h5ls(h5_file)
obj_names = paste(groups$group[which(groups$otype == 'H5I_DATASET')], groups$name[which(groups$otype == 'H5I_DATASET')], sep='/')
# now we have 'obj_names', a list of the names contained in the file: 'h5_file'
h5read_by_name <- function(x) {
h5read(file=h5_file, name=x, bit64conversion='bit64')
}
h5data = do.call(rbind, mclapply(obj_names, h5read_by_name, mc.cores=2))
即使使用多核加速一点也很长(天)。如果我使用更多核心,堆栈大小会爆炸,我已经处于硬限制。
有什么想法吗?