foreach
非常に巨大な文字列ベクトルがあり、dosnow
パッケージを使用して並列計算を実行したいと考えています。foreach
プロセスごとにベクトルのコピーが作成されるため、システムメモリがすぐに使い果たされることに気付きました。ベクトルをリスト オブジェクト内の小さな断片に分割しようとしましたが、それでもメモリ使用量の削減は見られません。これについて考えている人はいますか?以下は、いくつかのデモ コードです。
library(foreach)
library(doSNOW)
library(snow)
x<-rep('some string', 200000000)
# split x into smaller pieces in a list object
splits<-getsplits(x, mode='bysize', size=1000000)
tt<-vector('list', length(splits$start))
for (i in 1:length(tt)) tt[[i]]<-x[splits$start[i]: splits$end[i]]
ret<-foreach(i = 1:length(splits$start), .export=c('somefun'), .combine=c) %dopar% somefun(tt[[i]])