ray VS concurrent.futures.ProcessPoolExecutor

ad_official·2025년 6월 10일
0

python

목록 보기
2/2
  • Ray 방식

    • 여러 대의 컴퓨터(혹은 여러 개의 CPU 코어)에 작업을 “나눠서” 시켜줍니다.

    • 코드에 @ray.remote를 붙이고 ray.get()만 해주면, 내부에서 알아서 작업을 분산 실행해 줍니다.

    • 장점

      • 여러 대 컴퓨터를 동시에 쓸 수 있어, 처리를 아주 크게 늘릴 수 있어요.
      • 작업이 실패해도 다시 시도하거나 멈췄던 부분부터 이어서 할 수 있는 기능이 있어요.
    • 단점

      • 시작할 때 관리 프로그램을 띄우는 데 시간이 걸려요.
      • 복잡한 내용을 컴퓨터끼리 주고받다 보면 오히려 느려질 때가 있어요.
      • 설정하고 유지하기가 조금 번거로워요.

  • SingleMachineParallelExecutor 방식

    • 한 대의 컴퓨터 안에서만, 여러 프로세스나 스레드를 띄워서 동시에 처리합니다.

    • worker.submit() 같은 간단한 호출만으로 병렬 처리가 돼요.

    • 장점

      • 준비가 빠르고 설정이 단순해요.
      • 파일 읽고 쓰는 일이 많을 때, 같은 컴퓨터 안에서 처리하니 속도가 안정적이에요.
    • 단점

      • 한 대 컴퓨터만 쓰기 때문에, 처리량을 훨씬 더 늘리고 싶으면 한계가 있어요.
      • 프로세스 하나가 뻗으면 전체 작업이 멈출 위험이 있어요.

  • 어떤 방식을 쓰는 게 좋을까?

    • 지금처럼 한 대 리눅스 머신에서 수백~수천 개 시나리오를 처리할 때는, 준비가 빠르고 오버헤드가 적은 SingleMachineParallelExecutor 쪽이 더 편하고 빠를 거예요.
    • 나중에 컴퓨터 여러 대를 묶어 수만 개 시나리오를 처리해야 할 상황이 온다면, 그때는 Ray 도입을 고려해 보시면 좋습니다.
profile
ad_official

0개의 댓글