파이썬/기초 프로그래밍

파이썬에서 내부 자원과 외부 리소스의 차이

Data Jun 2025. 9. 13. 16:40

파이썬 코드를 실행하면 모든 것이 리소스를 사용합니다.
그런데 어떤 것은 우리가 직접 신경 쓰지 않아도 되고, 어떤 것은 반드시 닫거나 해제해야 합니다.
이 차이는 바로 내부 자원(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 구문 적극 활용)