본문 바로가기

[Python] Multiprocessing을 이용한 반복문 속도개선

Python/기타 2020. 6. 8.

반응형
from multiprocessing import Pool 


# 반복문을 실행할 함수
def func(i):
    print(i)

if __name__=='__main__':
    st = time.time()
    pool = Pool(processes=5)
    pool.map(func, range(0, 100000))
    print(time.time()-st)

for문으로 수백만건의 연산을 처리하면 정말 수백만초의 시간이 소요된다.

multiprocessing을 이용하여 반목문 처리 시간을 줄일 수 있다.

 

사용 예시 ) 

from multiprocessing import Pool 

def day_diff(i):
    temp = mt_rt[mt_rt['clientId']==mt_cid[i]]['date']  
    return (temp.values[-1] - temp.values[0]).days + 1

if __name__=='__main__':
    start_time = time.time()
    pool = Pool(processes=12)
    result = pool.map(day_diff, range(0, len(mt_cid)))
    print("- %s seconds -" % (time.time() - start_time))

소요 시간 : 579.6671471595764 초

 

 

start_time = time.time()
list(map(lambda x : day_diff(x), range(0, len(mt_cid))))
print("--- %s seconds ---" % (time.time() - start_time))​

소요 시간 : 1550.3460810184479 초

 

 

 

 

728x90

Comments