Multiprocessing,ladmbda expression

hasun·2021년 12월 30일
0

Multiprocessing

컴퓨터가 작업을 처리하는 속도를 높여주는 방법 중 하나

멀티 프로세싱을 활용하면 복잡하고 시간이 걸리는 작업을 별도의 프로세스를 생성 후 병렬처리해서 보다 빠른 응답처리 속도를 기대할 수 있는 장점이 있다.

멀티 프로세싱은 오버헤드의 증가 및 메모리 사용률이 높아지는 단점도 존재한다.

  1. 일단 multiprocessing모듈을 import한다
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/프로세스와-스레드의-차이

람다 표현식(ladmbda expression)

람다는 런타임에 생성해서 사용 할 수 있는 익명 함수

쉽게 말하면, 함수 이름이 없는 함수

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]
profile
내가 얻는 보상은 내가 제공하는 가치와 비례한다.

0개의 댓글