Table of Contents
728x90
Python에서 메모리 관리를 효과적으로 수행하기 위해 몇 가지 방법을 사용할 수 있습니다. 특히 특정 데이터셋만 유지하고 다른 데이터를 메모리에서 해제하고자 할 때 적용할 수 있는 몇 가지 방법을 소개합니다:
- 변수 삭제와 가비지 컬렉션 활용
del
명령어를 사용하여 불필요한 변수를 삭제할 수 있습니다. 예를 들어, 더 이상 필요 없는 큰 데이터셋이나 임시 변수를 삭제합니다.- Python의 가비지 컬렉터를 수동으로 실행하여 메모리를 정리할 수 있습니다.
gc.collect()
함수를 호출하면 된다.
import gc # 변수 삭제 del large_variable gc.collect()
- 데이터 구조 최적화
- 데이터셋을 사용할 때 데이터 타입과 구조를 최적화하여 메모리 사용량을 줄일 수 있습니다. 예를 들어,
pandas
라이브러리를 사용하는 경우,int32
대신int8
을 사용하거나, 필요 없는 열을 삭제하는 것이 좋습니다. - 불필요한 데이터 복사본을 만들지 않도록 주의합니다. 데이터를 처리할 때
inplace=True
옵션을 사용하는 것이 메모리를 절약할 수 있습니다.
- 데이터셋을 사용할 때 데이터 타입과 구조를 최적화하여 메모리 사용량을 줄일 수 있습니다. 예를 들어,
- 데이터 분할 처리
- 데이터셋이 너무 크면, 여러 작은 부분으로 나누어 처리할 수 있습니다. 데이터를 분할하여 순차적으로 처리하고, 각 부분을 처리한 후에는 메모리에서 삭제합니다.
- 파일 기반 데이터 처리
- 데이터셋을 전체적으로 메모리에 로드하는 대신 필요할 때만 부분적으로 읽어들이는 방법을 사용할 수 있습니다. 예를 들어,
pandas
의read_csv
함수에서chunksize
매개변수를 설정하여 큰 파일을 조각으로 나누어 처리할 수 있습니다.
- 데이터셋을 전체적으로 메모리에 로드하는 대신 필요할 때만 부분적으로 읽어들이는 방법을 사용할 수 있습니다. 예를 들어,
- 메모리 프로파일링 도구 사용
- 메모리 사용량을 모니터링하고 분석하기 위해 메모리 프로파일러를 사용할 수 있습니다. 예를 들어,
memory_profiler
패키지를 사용하면 스크립트의 메모리 사용량을 줄 단위로 확인할 수 있습니다.
- 메모리 사용량을 모니터링하고 분석하기 위해 메모리 프로파일러를 사용할 수 있습니다. 예를 들어,
이러한 방법들을 통해 특정 데이터셋만 유지하고 다른 메모리를 효과적으로 관리할 수 있습니다. 실제로 코드에 적용해보면서 가장 효과적인 방법을 찾는 것이 좋습니다.
Python에서 현재 사용 중인 모든 변수명을 보는 방법은 몇 가지가 있습니다. 대화식 인터프리터나 Jupyter 노트북에서 실행 중인 변수를 확인할 때 주로 사용합니다. 여기서는 두 가지 주요 방법을 소개하겠습니다:
locals()
또는globals()
함수 사용locals()
함수는 현재 로컬 심볼 테이블 딕셔너리를 반환합니다. 이 딕셔너리에는 함수 내부에서 정의된 로컬 변수가 포함됩니다.globals()
함수는 현재 전역 심볼 테이블 딕셔너리를 반환합니다. 이 딕셔너리에는 모듈 레벨에서 정의된 모든 전역 변수가 포함됩니다.
# 현재 로컬 변수 출력 print(locals()) # 현재 전역 변수 출력 print(globals())
dir()
함수 사용dir()
함수는 객체의 유효한 속성 목록을 반환합니다. 인자를 지정하지 않을 경우, 현재 스코프에서 정의된 이름들의 리스트를 반환합니다.
# 현재 정의된 모든 이름을 출력 print(dir())
locals()
, globals()
, 그리고 dir()
함수를 사용하면 현재 스크립트나 인터랙티브 세션에서 활용 중인 변수들의 목록을 쉽게 볼 수 있습니다. 이들 함수는 현재 환경의 상태를 파악하는 데 매우 유용합니다.
마지막 수단 다 kill하기
ps -ef | grep python | awk '{print $2}' | xargs kill -9
'Python' 카테고리의 다른 글
[Git] Github Organization 만들기 (0) | 2024.08.28 |
---|---|
RuntimeError: Numpy is not available (0) | 2024.07.25 |
[Python] 대규모 데이터셋을 다루는 경우 (0) | 2024.07.19 |
reindex와 reset_index의 차이 (0) | 2024.07.18 |
인덱스 Index, concat 전에는 reset_index (0) | 2024.07.18 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Numpy
- 해시
- Python
- git
- clustering
- recursion #재귀 #자료구조 # 알고리즘
- nlp
- cnn
- LIST
- 파이썬
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- RAG
- English
- speaking
- Hugging Face
- LLM
- Github
- 티스토리챌린지
- 오블완
- 리스트
- 손실함수
- PEFT
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- Transformer
- 코딩테스트
- Array
- t5
- Lora
- classification
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함