본문 바로가기

컴퓨터

[Python] 메모리 수동으로 해제하기

앞서 올린 주피터 노트북 메모리 확장을 했는데도 커널이 또 죽었다. 이번엔 더 오래 버티긴 했지만 결국 문제가 발생한다는 점 때문에 메모리를 살펴보니 이전에 해제가 되어야 했던 메모리가 해제가 되지 않는 것 같았다.

for i in range(1000):
    array = []
    array.append([12,13,24])
    print(array)

내 코드가 위처럼 되어 있었다. 반복문 안에서 array가 쓰이고 초기화가 되고를 반복하는 코드였다. 이때 파이썬은 반복문 안에 있는 경우에 대해선 메모리 해제를 하지 않고 반복문이 끝난 후 메모리 해제를 하는 듯하다. (내 추측이다.) 따라서 수동으로 메모리 해제를 해줘야 했다. 아래와 같이 했다.

for i in range(1000):
    array = []
    array.append([123,121,12])
    del(array)
    gc.collect()

del(array)를 해주면 array를 해제해 주고 마지막으로 해제된 공간을 수집하기 위해 gc.collect()를 호출해준다.(맞나?)