-
[Python] 파이썬 개발모드 devPython/Python 2024. 6. 25. 22:27반응형
파이썬 3.7부터 전용 개발모드(development mode)에서 파이썬 인터프리터를 호출해 추가적인 런타임을 체크할 수 있다.
이 코드를 실행했을 때 발생할 수 있는 잠재적인 이슈를 분석하는 데 유용하다. 올바르게 동작하는 코드에서 이를 적용하는 비용은 매우 높기 때문에 기본적으로 비활성화 되어 있다.
두 가지 방법으로 활성화 가능.
python -x dev application.py
PYTHONDEVMODE 환경 변수 이용
PYTHONDEVMODE = 1 application
기본 경고 필터 종류
- DeprecationWarning(종료 경고): 지원이 종료된 표준 라이브러리 요소
- ImportWarning(임포트 경고): 모듈 임포트 시 실수와 관련해서 발생
- PendingDeprecationWarning(종료 예정 경고): 지원이 종료도어 향후 릴르스에서 제거 될 표준 라이브러리 요소
- ResourceWarning(자원 경고): 열린 파일 닫지 않기와 같이 적합하지 않은 처리 시 발생
메모리 할당자 디버그 옵션
- 버퍼 언더플로
- 버퍼 오버플로
- 메모리 할당자 API 위반
- GIL의 안전하지 않은 사용
추가 옵션
폴트 핸들러(falut handler) 활성화: 애플리케이션이 SIGSEGV, SIGFPE, SIGBRT, SIGBUS, SIGILL이라는 시스템 호출이 을 받았을 때 애플리케이션 스택트레이스 출력.
개발 모드에서 발생한 경고(Warning)는 무언가 의도된 방식으로 작동하지 않음을 나타낸다.
코드가 정상적인 동작을 하는 동안에 에러로 간주하지 않아도 좋지만 장기적으로 부누명한 결함이 될 문제들을 찾아 낼 수 있따.열려 있는 파일을 적절히 정리하지 않으면 어느 시점에 애플리케이션이 실행되고 있는 환경 자원고갈을 일으킬 수 있다.
파일 디스크립터 RAM 디스크 저장 공간은 모두 자원이다. 모든 운영체제에는 동시에 열 수 있는 파일 수의 한도가 존재한다. 애플리케이션이 열었떤 파일을 닫지 않고 새 파일을 계속 열면 어느 시점에서는 새로운 파일을 열지 못하게 된다.개발 모드를 사용하면 미리 발견할 수 있다. 따라서 애플리케이션 테스팅을 하는 동안에는 개발 모드를 사용하는 것을 권장한다. 다만 개발 환경 모드의 확인으로 발생되는 추가적인 오버헤드 떄문에 운영환경에서는 그 사용을 권장하지 않는다.
반응형'Python > Python' 카테고리의 다른 글
[Python] Pytest Fixtures에 대한 가이드 (1) 2024.07.02 [Python]: 다중상속과 메서드 결정 순서 MRO(Method Resolution Order) (0) 2024.06.27 [Python] ChainMap (0) 2024.06.25 <class 'openpyxl.styles.named_styles._NamedCellStyle'>.name should be <class 'str'> but value is <class 'NoneType' (0) 2023.05.09 pip install h5py (0) 2022.03.03