2 つの data.table オブジェクトを含むリストがあります。アイデアを与えるために、1 つのテーブルには 400,000 行と 7 つの変数があり、別のテーブルには 750,000 行と 12 の変数があります。これらの 2 つのテーブルには同じ列がありません。私はそれらに対して多くの変更 (それぞれに異なる手順) を行います。変更手順には、合計の計算、集計値のパーセンタイルの検索、各グループのケース数、一意の長さなど (それぞれ 20 以上の手順) が含まれます。私が使うdata.table
これらの手順のパッケージ。ただし、それぞれに ~20 ステップ (合計で >40 ステップ) をすべて実行するには、少し時間がかかることがわかります。並列処理を使用してこれを高速化する方法を考えています。これらのステップは、リストのさまざまなコンポーネントで実行されるため、並行して処理できると思います。アイデアをブレインストーミングするために Google で徹底的な検索を行いましたが、役立つ情報は見つかりませんでした。誰かがこれをしましたか?少し光を当ててください、とても感謝しています。ありがとうございました
これまで、私はこれだけのことをしてきました。Result
2 つの data.table オブジェクトを含むリストです。fun1 と fun2 は、各 data.table オブジェクトで実行する必要がある一連の手順をまとめたものです。パフォーマンスに関しては、まだ何の改善も見られません(おそらくオーバーヘッドが原因ですか?わかりません)。
munge_data<-function(fun1=prep_data1, fun2=prep_data2, result=result){
library(foreach)
library(doParallel)
cl <- makeCluster(2)
registerDoParallel(cl)
fun_munge<-list(quote(prep_data1(result)), quote(prep_data2(result)))
finatest<-foreach (i=1:2, .packages = "data.table") %dopar% {
result<-result
prep_data1<-fun1
prep_data2<-fun2
eval(fun_munge[[i]])
}
stopCluster(cl)
finatest
}