파이썬 코드를 실행하면 모든 것이 리소스를 사용합니다.
그런데 어떤 것은 우리가 직접 신경 쓰지 않아도 되고, 어떤 것은 반드시 닫거나 해제해야 합니다.
이 차이는 바로 내부 자원(Internal Resource) 과 외부 리소스(External Resource) 의 구분에서 옵니다.
1. 내부 자원 (Internal Resource)
- 파이썬 인터프리터 안에서만 존재하는 것
- 운영체제나 다른 프로그램과 공유하지 않음
- 사용이 끝나면 파이썬의 가비지 컬렉터(GC) 가 자동 회수
예시:
- 변수 x = 10
- 리스트, 딕셔너리, 튜플 등 파이썬 객체
- 반복문, 함수 호출, 문자열 처리
이런 것들은 우리가 close() 같은 걸 호출할 필요가 없습니다.
2. 외부 리소스 (External Resource)
- 운영체제나 외부 시스템과 연결된 자원
- 파일 핸들, DB 커넥션, 소켓 등은 “빌려 쓰는 것”
- 닫지 않으면 다른 프로세스가 사용하지 못해 문제 발생
예시:
- 파일 입출력 (open("file.txt"))
- 데이터베이스 연결 (sqlite3.connect())
- 네트워크 소켓 (socket.socket())
- 쓰레드/프로세스 락 (threading.Lock())
이런 자원은 반드시 반납(close, release) 해야 하며, with 구문을 사용하면 자동으로 처리됩니다.
3. 쉽게 이해하기
- 내부 자원: 내 방 책상에 있는 공책 (쓰고 버리면 끝, 내가 전적으로 관리)
- 외부 리소스: 도서관에서 빌린 책 (다 쓰면 반드시 반납해야 다른 사람도 사용 가능)
정리하면
- 내부 자원 → 파이썬과 운영체제가 알아서 관리 (신경 쓸 필요 없음)
- 외부 리소스 → 직접 닫아줘야 함 (with 구문 적극 활용)
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
| 파이썬 언더스코어(_)의 의미와 활용 (0) | 2025.09.14 |
|---|---|
| 메모리를 아끼는 파이썬 데이터 처리 비법 — map, filter, reduce (0) | 2025.09.13 |
| 파이썬 컨텍스트 매니저로 실행 시간 측정하기 (0) | 2025.09.13 |
| 파이썬 컨텍스트 매니저(Context Manager) 완전 정리 (0) | 2025.09.13 |
| Python 객체 복사: Copy, Shallow Copy, Deep Copy (0) | 2025.09.13 |