matplotlib.pyplot.figure() 실행시 마다 작업이 종료되었다.
에러를 구글링해보니 메모리 누수문제라고 확신이 들었고 현재 프로세스 메모리 사용량이 궁금했다.
리눅스에서 top명령어로 알수도 있지만 디버깅하면서 어느라인에서 가장 많이 튀는지 보고싶었다.
코드는 아래와 같다.
def check_usage_of_cpu_and_memory():
import os
import psutil
pid = os.getpid()
py = psutil.Process(pid)
cpu_usage = os.popen("ps aux | grep " + str(pid) + " | grep -v grep | awk '{print $3}'").read()
cpu_usage = cpu_usage.replace("\n","")
memory_usage = round(py.memory_info()[0] /2.**30, 2)
print("cpu usage\t\t:", cpu_usage, "%")
print("memory usage\t\t:", memory_usage, "%")
matplotlib 라이브러리를 사용하여 이미지를 그릴때 각 iteration마다 이미지를 그리는데 필요한 메모리를 할당하고 이미지를 저장하는데 다음 iteration으로 넘어가도 해당 메모리를 점유하기 때문에 메모리 누수가 발생하기 쉽다고 함
아래 두가지를 사용하여 누수를 잡았다.