본문 바로가기
Python

멀티 프로세스(Multi-Process) 사용하기 with Python

by xangmin 2022. 7. 7.
반응형

멀티 프로세스(Multi-Process)를 사용하고자 한다.

 

멀티 프로세스 사용하기

1. 멀티 프로세스

아래의 함수를 4번 실행한다고 가정한다. 이 함수는 1초간 잠들었다가 깨어나는 동작을 수행한다. 

def do_something():
    print('1초간 잠을 잡니다...')
    time.sleep(1)
    print('잠에서 깨었습니다...')

 

이 함수를 4번 실행해보자. 이 때, 실행 완료 시간은 대략 4초가 걸릴 것이다.

import time
 
def do_something():
    print('1초간 잠을 잡니다...')
    time.sleep(1)
    print('잠에서 깨었습니다...')
 
if __name__ == '__main__':
 
    start = time.perf_counter()
 
    for _ in range(4):
        do_something()
    
    finish = time.perf_counter()
 
    print(f'{round(finish-start,2)}초 만에 작업이 완료되었습니다.')

 

[실행결과] 예상했던 대로 약 4초가 소요되었다.

 

2. multi-processing 모듈 사용하기

앞에 살펴보았던 코드를 multiprocessing 모듈을 이용하여 처리해보자.

import time
import multiprocessing
 
def do_something():
    print('1초간 잠을 잡니다...')
    time.sleep(1)
    print('잠에서 깨었습니다...')
 
if __name__ == '__main__':
 
    start = time.perf_counter()
 
    processes = []
    for _ in range(4):
        p = multiprocessing.Process(target=do_something) ## 각 프로세스에 작업을 등록
        p.start()
        processes.append(p)
 
    for process in processes:
        process.join()
    
    finish = time.perf_counter()
 
    print(f'{round(finish-start,2)}초 만에 작업이 완료되었습니다.')

프로세스를 담아줄 리스트를 초기화해주고, 루프를 돌면서 프로세스를 하나씩 만들어준다. 이 때 target 인자를 통하여 이 프로세스가 해야할 작업(함수)을 등록해준다. 등록해주고 난 뒤 실행할 수 있도록 start 메서드를 호출한다.

 

[실행결과] 실행 시간이 1.1초 걸렸다. 약 4 배정도 빨라졌다.

 출처 : https://zephyrus1111.tistory.com/113?category=835757

반응형

댓글