컴퓨터가 작업을 처리하는 속도를 높여주는 방법 중 하나
멀티 프로세싱을 활용하면 복잡하고 시간이 걸리는 작업을 별도의 프로세스를 생성 후 병렬처리해서 보다 빠른 응답처리 속도를 기대할 수 있는 장점
이 있다.
멀티 프로세싱은 오버헤드의 증가 및 메모리 사용률이 높아지는 단점도 존재
한다.
import multiprocessing
def count(name):
for i in range(0, 100000000):
a = 1 + 2
print("finish:"+name+"\n")
num_list = ['p1','p2', 'p3', 'p4']
if __name__ == '__main__':
# 코드 시작점을 여기로 하라는 명령어
pool = multiprocessing.Pool(processes = 4)
# 병렬 처리 시, 4개의 프로세스를 사용하도록 한다 / CPU코어 개수만큼 입력해주면 최대 효과를 볼 수 있다.
pool.map(count, num_list)
# 병렬화를 시키는 함수, count함수에 num_list 원소를 하나씩 넣는다.
#/ 즉, count('p1'), count('p2'), count('p3'), count('p4')
pool.close()
# 더이상 pool을 통해서 추가 작업을 하지 않을때 사용
pool.join()
# 프로세스가 종료될때 까지 대기
https://velog.io/@raejoonee/프로세스와-스레드의-차이
람다는 런타임에 생성해서 사용 할 수 있는 익명 함수
쉽게 말하면, 함수 이름이 없는 함수
print( (lambda x,y: x + y)(10, 20) )
# 30
람다 표현식을 사용하는 가장 중요한 이유는 함수의 인수 부분을 간단히 하기 위함
이다. 이런 방식으로 사용하는 대표적인 예가 map()
def list_mul(x):
return x * 2
result = list(map(list_mul, [1, 2, 3]))
print(result)
#[2,4,6]
map()이 lambda와 결합
result = list(map(lambda i: i * 2 , [1, 2, 3]))
print(result)
#[2,4,6]