본문 바로가기

IT/R

[R] 코드 연산 시간을 줄여주는 “future” 패키지

일반적인 R 코드는 순차적으로 처리하는 방식입니다. 이것을 동시에 처리한다면 시간을 많이 아낄 수 있지 않을까요?

작업의 순서가 고정되어 있지 않고 주어진 일을 여건에 맞게 유기적으로 처리하는 방식을 "비동기 방식"이라고 합니다.

순차적으로 처리되던 기존의 R 코드를 future 패키지를 통해 효율적으로 비동기 연산을 할 수 있습니다!

 


먼저, 패키지를 설치해줍니다.

availableCores()함수는 현재 실행 가능한 최대 CPU 코어를 알려줍니다. 저는 8이 나왔습니다. 

plan()함수를 이용해 사용하고자 하는 코어 개수를 지정합니다. Worker에 사용하고 싶은 개수를 지정해주면 됩니다.

직업관리자를 통해 생성된 세션들을 확인해봤더니 ‘R for Windows front-end’ 세션들이 생성되었습니다.




다음으로, 사용법에 대해 알려드리겠습니다.

패키지에서 제공하는 %<-% 형태의 특수한 연산자를 사용하는 방법입니다. 연산이 현재의 R studio 세션에서 진행되는 것이 아닌 백그라운드 세션에서 이루어집니다.


 

그럼, 어떤 상황에서 future 패키지를 사용하는 것이 좋을까요?

  1. 연산 속도를 높이고 싶을 때

이 경우라면, 확장 패키지인 future.apply , furrr 패키지도 함께 사용하시는 것을 추천드립니다.

 

  1. 연산을 다른 세션에 위임할 때

연산을 다른 세션에 위임하고 현재 세션에서 다른 코드를 돌릴 수 있습니다. 코드가 돌아갈 때까지 기다리는 시간을 아낄 수 있습니다.

 

 


저는 아직은 코드를 돌리는 데 시간이 오래 걸리는 상황을 많이 겪어보지는 않았는데요.

통계모델구축 시 sapply() 함수가 269.25초, future_apply() 함수는 2초 내외의 시간 안에 처리된 예가 있는 만큼,

앞으로 이 패키지를 적절하게 사용한다면, 빠르고 효율적으로 R 을 다룰 수 있지 않을까요?

 

참고  : https://www.jdwblog.com/post/parallel-with-future/