処理をしていると激烈に重いときがある
時間がかかる処理については、並列処理をする。
並列処理とは、使用可能なコアを並列で使うこと。
使用可能なコアの確認は、
# 必要なlibrary library(parallel) # 使用可能なコアの数を取得する cores <- detectCores() print(cores)
で、print結果が出る。 あまり気にしなくても良いのだろうけれど、自分は3/4のコアだけ使用して並列処理している。
library(parallel) library(foreach) # 使用するコアの数を指定 cores_to_use <- detectCores() * (3/4) #フルで使うなら、* (3/4)を省く print(cores_to_use) # パラレルバックエンドの設定 cl <- makeCluster(cores_to_use) # 指定した数のコアをクラスターに追加 registerDoParallel(cl) # foreachでのパラレル処理に使用 #並行処理用のプログラム書く #(普通のプログラムじゃなくて、foreachとか盛り込む感じ) # 終了処理 stopCluster(cl) # クラスターを閉じる
という具合。 途中の処理プログラムの構文がよく分からなくて悩んでる。 本当にわからないときは、GPTに聞いたりで対応。
どのくらいかかっているかを確認するために、開始時刻と終了時刻を記録してます。
start <- Sys.time() print(start) #プログラム end <- Sys.time() print(end) print(end - start)
という感じ。
並列処理しないで、朝見たら13時間回っていて、かつ期待した結果になってなかったときは、結構へこんだ。