파이썬, multiprocessing 질문

네이쳐   
   조회 2934   추천 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 817/5705
2014-05   5126921   정은준1
2015-12   1661872   백메가
2019-12   2851   김승권
2023-09   2851   osthek83
2019-06   2851   쿨쿨쿨
2020-09   2852   GPGPU
2020-07   2852   장동건2014
2020-04   2852   나파이강승훈
2021-10   2852   오준호5
2021-02   2852   션한맥주
2019-05   2852   LSSAH
2020-03   2852   enformation
2021-02   2852   무쏘뿔처럼
2019-08   2852   백룡
2021-10   2852   군인1
2019-01   2853   화란
2020-07   2853   일반유저
2021-05   2853   영산회상
2023-09   2853   정진수
2021-03   2853   무쏘뿔처럼
2021-10   2853   langrisser
2019-09   2853   victor