목차/차례
1. Python의 GIL(Global Interpreter Lock)이 무엇인지 설명하고, 멀티스레딩 환경에서의 영향을 말해주세요.
2. Django 또는 Flask와 같은 Python 웹 프레임워크에서 요청 처리를 위한 기본 흐름을 설명해주세요.
3. 데이터베이스와 연동된 Python 애플리케이션에서 트랜잭션 관리를 어떻게 수행하나요 예를 들어 ORM을 사용할 때 어떤 점에 유의해야 하나요.
4. 비동기 프로그래밍(Asyncio 등)을 사용할 때의 장단점과, 야놀자의 서비스에서 어떻게 활용할 수 있을지 설명해주세요.
5. Python의 데코레이터(Decorator)가 무엇인지 설명하고, 실무에서 어떤 상황에 활용할 수 있는지 예를 들어주세요.
6. REST API 설계 시 고려해야 할 핵심 원칙과, Python 백엔드에서 이를 어떻게 구현할 수 있을지 설명해주세요.
7. 캐시를 활용한 성능 최적화 방법에 대해 설명하고, Python 환경에서 Redis 또는
...
본문/내용
1. Python의 GIL(Global Interpreter Lock)이 무엇인지 설명하고, 멀티스레딩 환경에서의 영향을 말해주세요.
Python의 GIL(Global Interpreter Lock)은 한 번에 하스레드만이 Python 바이트코드를 실행하도록 허용하는 상호 배제 락입니다. 이는 CPython 구현에서 주로 사용되며, 멀티스레딩 환경에서도 여러 스레드가 동시에 Python 코드를 실행하는 것을 방지합니다. GIL로 인해 CPU 집약적 작업 시 멀티스레딩이 성능 향상에 거의 기여하지 않으며, 사실상 병렬 처리가 어려워집니다. 예를 들어, 병렬로 실행 가능한 웹 서버 같은 경우 GIL 때문에 여러 요청을 동시에 처리하는 데 한계가 있으며, 이를 해결하기 위해 멀티프로세스 또는 C 확장 모듈 사용이 권장됩니다. 실제 경험으로, GIL로 인해 CPU 바운드 작업의 성능이 1개 CPU 코어의 50% 이하에 머무르는 사례도 있습니다. 또한, PyPy나 Jython 같은 다른 파이썬 구현체는 GIL이 없거나 적게 영향을 받기 때문에 병렬처리 성능이 향상됩니다. 그렇다고 GIL이 I/O 바운드 작업에는 영향을 미치지 않아, 네트워크 요청과 같은 경우 병렬처리 효율이 상대적으로 높습니다. 따라서 GIL은 CPU 집약적 작업에 치명적…