현재 텍스트 분석과 자연어 처리 과정 수강하고 있으며
선생님께서 공유해주신 github주소는 아래와 같습니다.
https://github.com/corazzon/KaggleStruggle/blob/master/word2vec-nlp-tutorial/tutorial-part-1.ipynb
github 중 아래 코드까지는 잘 실행되나
# http://www.racketracer.com/2016/07/06/pandas-in-parallel/ from multiprocessing import Pool, TimeoutError import time import os 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() # 작업 결과를 합쳐서 반환
상기 코드 후 아래 코드 부터는 실행이 되지 않고 오류가 발생합니다.
코드
%time clean_train_reviews = apply_by_multiprocessing(\ train['review'], review_to_words, workers=4)
오류
AttributeError: Can't get attribute '_apply_df' on <module '__main__' (built-in)>
상기 오류 관련하여 아래 사이트 내용을 확인해 보았고 그래도 해답을 찾기 어려워 이렇게 글을 남기게 되었습니다.
https://www.inflearn.com/questions/21486
https://www.inflearn.com/questions/40850
마지막으로 아래와 같이 처리하면 해결될 것이라고 포털에 있는 내용 확인했는데
아래는 어떻게 해야할지 몰라 진행을 못하고 있습니다.
현재 상기 멀티프로세싱 오류에서 막혀 진도가 전혀 나가지 못해서...
관련하여 도움 부탁드리겠습니다.
감사합니다.
[Python] Multiprocessing 에서 AttributeError 발생# Error Message
AttributeError: can't get attribute 'f' on <module '__main__' (built-in)>
Child Process 에서 해당 모듈을 "import" 해야한다.
Error 가 발생하고 있는 'f' 함수를 별도 파일로 작성하고 import 하여 적용하여 해결한다.
or
https://makerj.tistory.com/236
답변 감사합니다.
말씀하신대로 구글 코랩에서 실행하니 잘 실행됩니다.
그런데 개인적으로 궁금한 점이 주피터 랩에서는
코랩과 동일하게 코드 입력(멀티프로세싱 파일을 import 등)하고
아래 코드 입력만 하면 멀티프로세스 에러가 발생하는데
이유가 무엇인지 개인적으로 궁금합니다.
개인 노트북이라 멀티프로세싱에 적합하지 않아서 그런건지 개인적으로
많이 궁금하긴 합니다.
그럼 답변 부탁드리겠습니다.
주피터 랩에서는 아래 코드부터 에러 발생 또는 실행이 안됨. 이유가 궁금함.