LG유플러스
기술 스택 정보가 없어요.
이권수
파이썬 Multi-Threading과 GIL에 대해서 알아두면 좋은 4가지! 1. Concurrency(동시성)은 여러 작업이 순서 상관 없이 혼재되어 수행할 수 있음을 의미하고, Parallelism(병렬성)은 여러 작업이 동시에 수행될 수 있음을 의미합니다. 파이썬 threading 모듈을 사용하면 스레드 기반으로 동시성을 제공할 수 있습니다. 2. 파이썬 인터프리터(Cpython)는 기본적으로 Thread-safe하지 못합니다. 인터프리터는 작업을 수행하기 위한 목적으로 다양한 전역 변수들을 사용하는데, 이는 모든 스레드에서 접근 가능하여 문제가 발생할 수 있습니다. 이를 간편하게 통제하고 관리하기 위해 인터프리터는 GIL(Global Interpreter Lock)이라는 글로벌 락을 사용합니다. 3. 파이썬 GIL(Global Interpreter Lock)은 한 번에 하나의 스레드만 실행할 수 있도록 하는 메커니즘입니다. CPU 바운드 작업(계산 집중적 작업)에서는 GIL 때문에 멀티스레딩이 기대하는 성능 향상을 제공하지 못할 수 있습니다. 그러나 I/O 바운드 작업(파일 시스템 작업, 네트워크 요청 등)에서는 GIL의 영향을 덜 받기 때문에 멀티스레딩이 유용할 수 있습니다. 4. 파이썬 3.13 버전부터는 PEP-703에서 제안한 --disable-gil 컴파일 옵션이 추가될 예정입니다. GIL을 사용하는 버전과 사용하지 않는 버전이 제공될 예정이고, 향후 2-3 버전 릴리즈 안에는 환경 변수를 통해서 GIL을 제어할 수 있도록 할 예정이라고 합니다.(https://github.com/python/cpython/issues/108219) https://brunch.co.kr/@growthminder/140
이권수
python __main__ 에 대해서 알아야할 5가지 * __main__ 은 현재 실행 중인 스크립트를 가리키는 특별한 모듈 이름입니다. Python에서 스크립트나 모듈이 "메인"으로 실행될 때, 그 스크립트의 __name__ 변수는 "__main__" 으로 설정됩니다. * if __name__ == "__main__": 구문을 사용하면 모듈이 직접 실행될 때만 특정 코드를 실행하도록 할 수 있습니다. 이는 모듈이 다른 스크립트에서 임포트될 때는 실행되지 않게 하려는 경우에 유용합니다. * __main__ 이름을 활용하면, 스크립트가 모듈로 사용될 때와 직접 실행될 때의 동작을 분리할 수 있습니다. 예컨대, 모듈에 포함된 함수들을 다른 스크립트에서 임포트해 사용할 수 있으면서, 해당 모듈 자체도 독립적인 프로그램으로 실행될 수 있습니다. * __main__ 을 사용하는 주된 이유 중 하나는 코드의 진입점(entry point)을 명확하게 정의하여 코드의 가독성과 유지보수성을 향상시키는 것입니다. 이를 통해 개발자들은 프로그램의 시작점을 쉽게 찾을 수 있으며, 코드의 실행 흐름을 더 잘 이해할 수 있습니다. * __main__ 체크는 테스트 코드나 예제 코드를 모듈에 포함시킬 때도 유용하게 사용됩니다. 이 방법을 통해 모듈의 함수나 클래스가 올바르게 작동하는지 검증하는 코드를 모듈에 포함시키면서도, 모듈이 다른 곳에서 임포트될 때는 이러한 테스트 코드가 실행되지 않도록 할 수 있습니다. https://brunch.co.kr/@growthminder/132
💡
LG유플러스 사람들의
생각이 궁금하다면?