본문 바로가기
python

컨텍스 매니저, python with

by 타닥타닥 토다토닥 부부 2024. 11. 16.
반응형

컨텍스 매니저, python with

파이썬 코드를 작성하다 보면 with 문을 사용하는데 사실 사용 이유를 모르고 사용하기도 합니다. 그래서 with 문이 주요 사용되는 경우와 그 이유에 대해 정리해 보았습니다.

 

파일을 불러올때 with 문을 쓰는 이유

파일을 불러올 때 with 문 안에서 관리되는 내용은 File handles 이고, 파일을 열어둔 상태로 방치하는 것을 방지하여 리소스 고갈을 막기위해 사용합니다.

 

활용예시 

with open("example.txt", "w") as file:
    file.write("Hello, World!")

 

데이터 베이스에서 데이터 추출할 때 with 문을 쓰는 이유

DB를 활용할 때 with 문 안에서  데이터 베이스 연결, 커서, 트랜젝션을 관리하며, 데이터 베이스 연결이 닫힌 상태가 되는 것을 확실히 하여 오류가 DB에 반영되거나 및 리소스가 고갈되는 것을 막기위해 사용합니다. 

 

활용예시

with db_connection.cursor() as cursor:
    cursor.execute("SELECT * FROM table")
# Connection automatically closed after use.

 

분산처리 작업을 수행할 때 with 문을 쓰는 이유

분산처리를 위해 with문을 사용하면 락, 세마포어, 또는 스레드 풀가 관리되며, 데드락이나 리소스 경합을 방지하기 위해 락의 적절한 해제 또는 스레드 종료를 보장하기 위해 사용합니다.

 

네트워크 연결 작업을 수행할 때 with 문을 쓰는 이유

네트워크 연결을 위해 소켓, HTTP 세션, 또는 API 요청을 관리하기 위해 사용되며, 연결이 사용 후에 닫히도록 하여 타임아웃이나 리소스 고갈을 방지하기 위해 사용됩니다

 

활용예시

import requests
with requests.Session() as session:
    response = session.get("https://example.com")
# Session automatically closed after block.

 

로깅 코드를 작성할 때 with 문을 쓰는 이유

로그 핸들러 또는 로그 설정을 관리하기 위해 with 문이 사용되고, 로그가 제대로 플러시되고 닫히도록 보장하는 역할을 합니다.

 

활용예시

import logging
handler = logging.FileHandler("logfile.log")
with logging.getLogger().addHandler(handler):
    logging.info("This is a log entry")
# Handler is cleaned up after the block.
반응형

댓글