단, 한 가지 주의할 점:
python -O(옵티마이즈 모드)로 실행하면 assert가 제거됩니다.
정말 “GPU를 반드시 강제해야 한다”는 보장을 항상 유지하고 싶다면, 원래처럼 if not avail: raise RuntimeError(...)를 쓰는 게 더 안전합니다.
파이썬의 Optimize 모드(-O, -OO)는 CPython 실행 시 “디버깅/검증용 오버헤드”를 줄이기 위해 일부 코드 요소를 제거/변경하는 옵션이에요. 핵심은 아래 2가지입니다.
-O / -OO에서 바뀌는 것assert가 완전히 제거됨 (가장 중요)python -O로 실행하면 assert 조건, 메시지 문이 아예 컴파일 단계에서 삭제됩니다.assert torch.cuda.is_available() 같은 “필수 조건 강제”는 -O에서 무력화돼요.__debug__ 값이 False가 됨기본 실행에서는 __debug__ == True
-O(또는 -OO)에서는 __debug__ == False
따라서 아래 같은 패턴도 실행되지 않습니다.
if __debug__:
... # 디버그 전용 검증/로그
-OO는 추가로 docstring 제거-OO는 -O의 효과 + 모든 docstring(__doc__) 제거참고로, “성능 최적화(루프가 빨라진다)” 같은 건 기대하면 안 됩니다. -O는 주로 assert/디버그용 코드 제거가 전부에 가깝습니다.