最新更新參考: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系統,當...