purrr
→ furrr
for
루프에서 병렬처리 1먼저 제곱해서 \(\{1,2,3\} \longrightarrow \{1,4,9\}\)로 매핑시키는 for
루프를 작성해보자.
1
4
9
그 다음으로 for
루프를 함수형 프로그래밍 팩키지 purrr
을 사용해서 간결한 코드로 작성해보자. 이를 위해서 람다 무명함수를 사용해도 되고, 함수명을 외부에 명시적으로 정의해서 이를 map_dbl
함수에 넣어 계산해도 된다.
[1] 1 4 9
purrr
팩키지 map_dbl()
함수를 사용한다고 해서 코드를 간결하게 했지만 진정한 병렬처리는 furrr
팩키지를 사용해서 구현이 가능하다.
tictoc
팩키지를 사용하면 경과시간을 간단히 측정할 수 있다.
1
4
9
3 sec elapsed
furrr
병렬처리furrr
팩키지를 도입하게 되면 병렬처리 가능한 작업의 효율을 높일 수 있다. 즉, purrr
팩키지가 컴퓨터에 순차처리하던 작업을 furrr
팩키지를 통해서 순차처리가 가능하다.
purrr
순차처리
[1] 1 4 9
3.02 sec elapsed
furrr
병렬처리
library(furrr)
future::plan(multiprocess)
tic()
square_it_sleep <- function(x) {
Sys.sleep(1)
x^2
}
future_map_dbl(1:3, square_it_sleep)
[1] 1 4 9
1.29 sec elapsed