[Python] Multiprocessing을 이용한 반복문 속도개선
반응형
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
'Python > 기타' 카테고리의 다른 글
[Python] 딕셔너리 :: Dictionary (0) | 2020.09.12 |
---|---|
[Scipy.stats] 왜도(Skew) / 첨도 (Kurtosis) (0) | 2020.09.07 |
[chardet] 파일 인코딩을 무엇으로 지정할지 모를 때 :: Encoding Error , Encoding Detector (0) | 2020.05.06 |
[Python] 정규표현식 기본 re :: regular expression (0) | 2020.04.17 |
[Python] 정규성 검정 :: 히스토그램, Q-Q Plot (2) | 2020.04.07 |
Comments