parallelize.utf8

parallelize

parallel::mclapply(), parallel::mcMap() windows에서는 사용할 수 없고, mac에서만 사용할 수 있음

require(parallel)
## Loading required package: parallel
cores = detectCores() # 4

unlist(mclapply(21:30, sqrt, mc.cores=4))
##  [1] 4.582576 4.690416 4.795832 4.898979 5.000000 5.099020 5.196152
##  [8] 5.291503 5.385165 5.477226

이 경우에서, mclapply()는 실제로 lapply()보다 느리다. 여러 코어에 계산을 보내고 결과를 수집하기 때문이다. 다음 예를 통해 이를 확인해보면 다음과 같다

boot_df = function(x){
        x[sample(nrow(x), replace=TRUE), ]
}

rsquared = function(model){
        summary(model)$r.square
}
boot_lm = function(i){
        rsquared(lm(mpg~wt+disp, data=boot_df(mtcars)))
}

system.time(lapply(1:5000, boot_lm)) # 5000번 반복
##    user  system elapsed 
##   5.746   0.068   5.975
cores = detectCores()
system.time(mclapply(1:5000, boot_lm, mc.cores=cores)) # 5000번 반복
##    user  system elapsed 
##   6.969   0.253   3.141

'R > functional' 카테고리의 다른 글

data_frame, apply  (0) 2018.06.07
lapply  (0) 2018.06.06

+ Recent posts