파이썬에서 효율적으로 메모리 관리하는 방법 - del, 제너레이터, 가비지컬렉션
글 작성자: _rian
파이썬은 개발자가 직접 메모리를 관리하는 대신 언어 자체가 대부분의 메모리를 관리해 따로 처리할 필요가 없긴 하나, 코드가 길어지거나 다루는 데이터가 방대하거나 메모리 자원이 한정적일 때 파이썬에서도 메모리 사용을 최적화해주는 것이 필요하다.
1. 사용하지 않는 객체 dealloc
메모리 사용량을 줄이는 가장 간단한 방법은 사용하지 않는 객체를 삭제하는 것이다. del
키워드를 사용하여 수행할 수 있다.
a = [1, 2, 3, 4, 5, ...., 100000000]
# 객체 삭제
del a
더이상 a 객체가 필요하지 않을 때 del
키워드를 사용할 수 있다.
2. 제너레이터 사용
만약 리스트에 많은 양의 데이터가 들어가게 되는 경우 제너레이터를 사용하는 방법도 좋은 고려방안이다. 제너레이터는 필요할때만 데이터를 생성하기때문에 한번에 하나의 항목만 메모리에 유지해 메모리를 크게 절약할 수 있다.
# 리스트 사용
numbers_list = [i for i in range(1000000)]
# 제너레이터 사용
numbers_generator = (i for i in range(1000000))
리스트 타입은 가능하다면 제너레이터를 활용하거나 혹은 array
모듈 또는 numpy
라이브러리를 사용하는 것이 좋다.
3. 가비지 컬렉션
가비지 컬렉션이란?
가비지 컬렉션 (Garbage Collection)은 프로그램이 동적으로 할당했지만 더이상 사용하지 않는 메모리를 자동으로 회수하는 프로그램이다. 실제로는 사용하지 않지만 계속해서 메모리를 점유하고 있는 메모리 릭 (memory leak)을 방지하는 용도이다. 프로그래밍 언어에 따라 동작 방식이 다르다.
파이썬은 가비지컬렉션을 사용해 메모리를 관리해 자동으로 사용하지 않는 메모리를 해제하고 있으나 수동으로 제어가 가능하다. gc
모듈을 사용하면 가비지 컬렉션을 수동으로 제어할 수 있다.
import gc
# 가비지 컬렉션 강제 실행
gc.collect()
'Computer Engineering > Python' 카테고리의 다른 글
파이썬에서 백업 파일 및 임시 파일 생성하는 방법 (0) | 2024.02.20 |
---|---|
[Pythonic한 코드 작성하기] 파이썬의 자식 프로세스 관리 모듈, subprocess (0) | 2021.04.21 |
[Pythonic한 코드 작성하기] Python의 가변 인수(*args)와 키워드 인수에 대해 파헤쳐보자 (0) | 2021.02.25 |
[Pythonic한 코드 작성하기] 리스트 컴프리헨션 (list comprehension) (0) | 2021.02.03 |
파이썬에서 Generator란? (0) | 2021.01.27 |
댓글
이 글 공유하기
다른 글
-
파이썬에서 백업 파일 및 임시 파일 생성하는 방법
파이썬에서 백업 파일 및 임시 파일 생성하는 방법
2024.02.20 -
[Pythonic한 코드 작성하기] 파이썬의 자식 프로세스 관리 모듈, subprocess
[Pythonic한 코드 작성하기] 파이썬의 자식 프로세스 관리 모듈, subprocess
2021.04.21 -
[Pythonic한 코드 작성하기] Python의 가변 인수(*args)와 키워드 인수에 대해 파헤쳐보자
[Pythonic한 코드 작성하기] Python의 가변 인수(*args)와 키워드 인수에 대해 파헤쳐보자
2021.02.25 -
[Pythonic한 코드 작성하기] 리스트 컴프리헨션 (list comprehension)
[Pythonic한 코드 작성하기] 리스트 컴프리헨션 (list comprehension)
2021.02.03