-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
멀티 프로세스 코드가 작동하지 않습니다
19.08.15 16:22 작성 조회수 232
0
# 참고 : https://gist.github.com/yong27/7869662
# http://www.racketracer.com/2016/07/06/pandas-in-parallel/
from multiprocessing import Pool
import numpy as np
def _apply_df(args):
df, func, kwargs = args
return df.apply(func, **kwargs)
def apply_by_multiprocessing(df, func, **kwargs):
# 키워드 항목 중 workers 파라메터를 꺼냄
workers = kwargs.pop('workers')
# 위에서 가져온 workers 수로 프로세스 풀을 정의
pool = Pool(processes=workers)
# 실행할 함수와 데이터프레임을 워커의 수 만큼 나눠 작업
result = pool.map(_apply_df, [(d, func, kwargs)
for d in np.array_split(df, workers)])
pool.close()
# 작업 결과를 합쳐서 반환
return pd.concat(list(result))
%time clean_train_reviews = apply_by_multiprocessing(\
train['review'], review_to_words, workers=8)
%time clean_test_reviews = apply_by_multiprocessing(\
test['review'], review_to_words, workers=4)
위 코드를 돌리면 무한하게 돌아가고, cpu 사용량은 1자릿수로 유지됩니다.
답변을 작성해보세요.
0
이준호
질문자2019.08.22
싱글 프로세싱보다 오래걸리는게 정상인가요?
멀티 프로세싱을 공부중인데, 다른 예제도 정상적으로 안돌아가는 것 같아서 문의드립니다.
현재 개발 환경은 윈도우10, 라이젠 3500u입니다. 라이젠 때문에 안돌아갈 수도 있나요..?
0
박조은
지식공유자2019.08.16
안녕하세요. 위 코드는 실행시간이 조금 오래 걸리는 편이에요.
장비에 따라 속도 차이가 좀 나는데 아래의 링크로 실행하시면 구글 colab을 통해 코드를 실행해 보시는데 도움이 될거 같습니다.
https://colab.research.google.com/drive/1BS75ExsTWotPP4L9fGgBfaweQaC4XuZ3
답변 2