• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

멀티 프로세스 코드가 작동하지 않습니다

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자릿수로 유지됩니다.

답변 2

·

답변을 작성해보세요.

0

이준호님의 프로필

이준호

질문자

2019.08.22

싱글 프로세싱보다 오래걸리는게 정상인가요?

멀티 프로세싱을 공부중인데, 다른 예제도 정상적으로 안돌아가는 것 같아서 문의드립니다.

현재 개발 환경은 윈도우10, 라이젠 3500u입니다. 라이젠 때문에 안돌아갈 수도 있나요..?

0

안녕하세요. 위 코드는 실행시간이 조금 오래 걸리는 편이에요.

장비에 따라 속도 차이가 좀 나는데 아래의 링크로 실행하시면 구글 colab을 통해 코드를 실행해 보시는데 도움이 될거 같습니다.

https://colab.research.google.com/drive/1BS75ExsTWotPP4L9fGgBfaweQaC4XuZ3