본문 바로가기
Aiffel/Fundamental

MultiProcessing

by EDGE-AI 2021. 12. 30.

Multiprocessing 은 컴퓨터가 작업을 처리하는 속도를 높여주는 방법 중 하나이다. 예시를 들자면 하나의 자전거를 이용해 여러명이 한명씩 순차적으로 목적지에 가다가, 여러 자전거를 이용해서 여러명이 동시에 목적지에 도달하는 것.

  • parrallel processing : 병렬 처리
  • serial processing : 순차 처리

Serial Processing

import time

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

def count(name):
	for i in range(100000000):
    	a = 1 + 2
        
    
for num in num_list:
	count(num)
    
print("time :", time.time() - start)

>>>
time : 9.47161340713501

 

Parrellel Processing

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
        
if __name__ == '__main__':
    pool = multiprocessing.Pool(processes = 4)
    pool.map(count, num_list)
    pool.clost()
    pool.join()
    
print("time :", time.time() - start)

>>>
time : 6.977231979370117

 

  • pool = multiprocessing.Pool(processes = 4) : 병렬 처리 시, 4개의 프로세스를 사용하도록 함. CPU 갯수만큼 입력해주면 최대의 효과를 볼 수 있음
  • pool.map(count, num_list) : 병렬화를 시키는 함수, count 함수에 num_list의 원소들을 하나씩 넣어 놓는다. 
  • pool.close() : 일반적으로 병렬화 부분이 끝나면 나옴, 더이상 pool을 통해서 새로운 작업을 추가하지 않을 때 사용
  • pool.join() : 프로세스가 종료될 때까지 대기하도록 지시하는 구문으로써 병렬처리 작업이 끝날 때까지 기다리도록 함.

 

 

 

참고 문헌

https://sebastianraschka.com/Articles/2014_multiprocessing.html

 

'Aiffel > Fundamental' 카테고리의 다른 글

프로그래밍 패러다임  (0) 2021.12.30
클래스, 모듈, 패키지  (0) 2021.12.30
파이썬의 특징  (0) 2021.12.30
JSON 파일  (0) 2021.12.29
XML 파일  (0) 2021.12.29

댓글