파이썬, multiprocessing 질문

네이쳐   
   조회 3665   추천 0    

ligands_temp 라는 백만 개 정도 되는 데이터를 한번에 읽어서, 코어 40개에 처리하니까 너무 느려서


10만 개씩 데이터를 끊어서 처리를 해보려고

ligands_gen으로 10만 개씩 나누고

for ligands_gen_batch in ligands_gen:로 처리했습니다.


그런데 원래는 40개 job 모두 잘 되었는데,

지금은 4개만 살아서 돌아갑니다. 왜 그런건지 모르겠습니다 ㅠ.

도와주세요~






짧은글 일수록 신중하게.
lazarus 2021-06
try로 코드 감싸고, 에러메시지 출력해보셔요.
     
네이쳐 2021-06
아 넵 바로 해보겠습니다~
트니아빠 2021-06
쪼랩으로 근성으로 코딩하는 저는 첨부해 주신 코드를 이해를 못하지만.. OTL
저는 multiprocessing을 다음처럼 이용합니다.
def img_upsize_yolo(img_file_name):
    img = cv2.imread(img_file_name)
    ...
    cv2.imwrite(img_file_name, img)
yolo_img_list = [...]
multiprocessing.Pool(os.cpu_count()).map(img_upsize_yolo, yolo_img_list)

그 동안의 경험으로는 이유없이 메모리 누수되는 경우가 있는 것 같습니다.
ligands_gen 을 10만개로 하셨는데 1000개나 그런식으로 줄여보는 것도 하나의 방법이 될 수있을 것 같습니다.
분명히 조금 빨리 일마치고 노는 코어가 생기는데 어짜피 분석 시간은 길고 그런거에 영향을 받지는 않는 것 같습니다. ;)

저의 경우에는 for 안에 for 안에 for를 넣는 3단으로 구성했을 때, 이상하게 중간에 멎는 현상이 있었습니다.
for i in list1:
  for j in list2:
      for k in list3:
          ~~~
배치를 바꿔서 가장 안쪽의 것이 빨리 바뀌게 해주니 이상하게 해결된 적이 있습니다.


QnA
제목Page 752/5727
2015-12   1779736   백메가
2014-05   5254820   정은준1
2016-04   5230   깜박깜박가
2013-09   16791   이유종
2016-04   4254   ComAreMot
2018-06   10705   바부팅이
2022-04   2396   만사오케이
2019-08   2805   김건우
2020-10   3394   moriss
2015-02   6957   최용섭
2011-01   6117   가빠로구나
2015-02   3666   최재원99
2023-12   3229   조진석
2011-02   6365   취야선
2015-02   5762   구리구리
2019-08   3314   냐아아아암
2020-11   2270   Noname1
2013-10   7254   구명서
2018-06   3949   한가한이수진
2013-10   9710   악땅
2013-10   11802   아름다운노을
2018-06   4217   마키