R語言 並行處理

2021-07-03 08:33:06 字數 1539 閱讀 5587

最新更新參考:

具體的不懂,只記錄實現

r自帶的包,可以實現並行處理。

library(parallel)

detectcores(logical = f) #獲得實際核數

cl <- makecluster(getoption("cl.cores", 4)) # 設定並行核數為4

clusterexport(cl=cl, varlist=c("text.var", "ntv", "gc.rate", "pos")) # 匯入全域性環境中的資料

clusterevalq(cl, require(lme4)) # 匯入使用的包

# 開始計算

revolution r 提供的包,需要選擇doparallel包(windows, linux, mac osx 均可) 或者 domc包(只適用於linux,mac osx)作為後台

library(foreach)

library(doparallel)

cl <- makecluster(2) # 設定並行核數

registerdoparallel(cl) # 註冊並行

foreach(i=1:3) %dopar% sqrt(i) # 開始計算

不知何故,在mac osx 下採用doparallel速度特別慢, 比不用並行還慢,於是又嘗試了domc

library(foreach)

library(domc)

registerdomc(2) # 設定並行核數, 並註冊並行

foreach(i=1:3) %dopar% sqrt(i) # 開始計算

可以通過下面命令,檢視選擇的後台包

getdoparregistered()

getdoparworkers()

getdoparname()

plyr中的並行程式採用foreach作為並行包, 所以在plyr中使用並行需完成上面提到的步驟。

以foreach,domc包,ldply函式為例

library(foreach)

library(domc)

registerdomc(2) # 設定並行核數, 並註冊並行

ldply(.data, .fun = null, ..., .progress = "none", .inform = false,

.parallel = t, .paropts = list(.export = c('your_data'), .packages=c('your_package') ), .id = na)

# .parallel = t 開啟並行

# .paropts = list(.export, .packages) 這是乙個list, 裡面的.export(匯入用到的資料), .package(匯入需要的包)都是foreach::foreach()中的引數,可以??foreach 檢視具體細節

R語言中的並行處理

網上有人說foreach包可以並行,我就去弄了,結果發現乙個普通的二重迴圈什麼事都不錯都很卡!搗鼓了半天才發現是foreach的問題 為了提速,做了如下事宜 計算trustl r.trust matrix matrix rep 0,r.item count r.user count nrow r.u...

R語言中for迴圈的並行處理

本文用於記錄筆者在將r語言中的for語句並行化處理中的一些問題。這裡使用foreach和doparallel包提供的函式實現for語句的並行處理。func function x,y,z main x 2 y 3 z 1 100000 start proc.time 3 1 a 0 for i z i...

R語言快速實現並行處理與共享記憶體

用r程式設計時,我們可能會需要並行 parallel 處理乙個耗時很長的任務,有時又希望每個子任務都能訪問和修改同乙個變數,那這個變數就應放在共享記憶體 shared memory 中,下面我就簡單介紹怎樣快速實現 注 下面我講的並行處理方法適用於linux mac系統,不適用windows系統,當...