본문 바로가기

Python

Python Multiprocessing 작업하며 발생한 이슈들 정리

320x100
320x100

 

1. Queue에서 get( )을 해줘도 Memory 반납이 안 되는 현상

 DICOM을 PNG로 변환하는 과정에서 속도 좀 올리려고 Multiprocessing 작업을 하던 중에 Queue( )도 사용하게 됐는데, 이 놈이 get( )을 하면 메모리 반납도 같이 해줘야하는데 계속 들고 있어서 서버가 터지기 직전까지 간 적이 있다. 2~3일 구글링 끝에 원인을 찾게 됐다. Numpy version 문제였다. 1.16에서 1.18로 바꾸니까 잘 되더라.

 

 이 글이 나 같은 현상을 겪는 사람들에게 얼른 노출이 되어 도움이 되길 바라며...

 

https://stackoverflow.com/questions/54419043/memory-use-if-multiprocessing-queue-is-not-used-by-two-separate-processes

https://github.com/numpy/numpy/issues/12793

 

 

2. Process 사용 할 때 무한루프로 빠지는 것도 아닌데 Process 종료가 안 되는 현상

Process 간의 통신을 위해 Queue를 사용했는데, Process 종료 시점이 Queue가 너무 많이 차 있으면 종료가 안 됨. Process 종료 시키는 부분에서 Queue에 대한 작업도 추가하니 해결 됨.