[Python] Joblib을 이용한 병렬 프로그래밍

qw4735·2023년 1월 8일
  1. 파이썬 병렬처리에 필요한 모듈 임포트

    import multiprocessing as mp   # 파이썬 병렬 작업을 위한 코어 수 계산
     from joblib import Parallel, delayed
  2. 병렬 처리에 필요한 코어 수 지정

    num_core = min(mp.cpu_count(), 2)  # 병렬처리에 필요한 코어수 정함 -> 최대 2개
    print(num_core) # 2
  3. 병렬 처리 대상이 되는 함수를 만듬

    def square(i):
    	return i*i
  4. 병렬 처리를 위한 joblib 기본 사용법

    with Parallel(n_jobs=num_core) as parallel:  # n_jobs : 병렬처리를 위한 코어수
    	results = parallel(delayed(square)(i) for i in range(10)) 
    print(results)   # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    1. with 구문을 이용하여 Parallel 클래스의 인스턴스를 만들어준다.
    1. Parallel 클래스를 인스턴스화한 parallel에 병렬 처리 작업을 넣어준다.
      각 loop를 돌면서 delayed가 각 코어에 작업을 할당해주면 이를 parallel이 받아서 하나로 다시 합쳐 준다.

그러나, 단순히 for loop작업은 병렬처리를 안하느니만 못하다. 왜냐하면 병렬처리를 위해 소모되는 디폴트 시간(코어별로 작업준비, 작업할당, 결과 하나로 합침 등)이 있기 때문에 오히려 더 많은 시간이 소요될 수 있기 때문이다.

reference: https://zephyrus1111.tistory.com/156

0개의 댓글