Multiprocessing (feat. python)

괴도소녀·2021년 7월 5일
0

python

목록 보기
6/11

컴퓨터가 작업을 처리하는 속도를 높여주는 방법 중 하나이다.
무언가 일이 주어졌을 때 1명이 일하냐, 4명이 동시에 일하느냐에 따라 작업 처리 속도가 확연히 차이 날 것이다.

우선 Multiprocessing을 사용하지 않았을 때를 살펴보자.

[코드]

import time

num_list = ['PR1','PR2', 'PR3', 'PR4']
start = time.time()

def count(name):
    for i in range(0, 100000000):
        a = 10 + 100
        
    print("finish : ",name)

for num in num_list:
    count(num)

print("time :", time.time() - start)

[결과]

finish :  p1
finish :  p2
finish :  p3
finish :  p4
time : 8.653742551803589

이제 Multiprocessing처리한 코드를 보자.

[코드]

import multiprocessing
import time

num_list = ['p1','p2', 'p3', 'p4']
start = time.time()

def count(name):
    for i in range(0, 100000000):
        a = 1+2
    print("finish : ",name)
    

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes = 4)
    pool.map(count, num_list)
    pool.close() # 병렬화 부분이 끝나면 나온다. 더 이상 pool을 통해서 새로운 작업을 추가하지 않을 때 사용.
    pool.join() # 프로세스가 종료될 때까지 대기하도록 지시하는 구문. 병렬처리 작업이 끝날 때까지 기다린다.

print("time :", time.time() - start)

참고로 결과는 사람마다 다르다.

[결과]

finish : finish :   p4p1

finish :  p3
finish :  p2
time : 2.5512523651123047

처리속도가 확연히 차이나는 것을 볼 수 있다.

  • serial processing : 8.653742551803589
  • multi processing : 2.5512523651123047

0개의 댓글