LG유플러스

LG유플러스

개발팀 리뷰

위 내용은 LG유플러스 전 • 현 재직자의 응답 결과입니다.

기술 스택

기술 스택 정보가 없어요.

재직자가 작성한 글

profile picture

이권수

LG U+ 소프트웨어 개발자

파이썬 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

profile picture

이권수

LG U+ 소프트웨어 개발자

python __main__ 에 대해서 알아야할 5가지 * __main__ 은 현재 실행 중인 스크립트를 가리키는 특별한 모듈 이름입니다. Python에서 스크립트나 모듈이 "메인"으로 실행될 때, 그 스크립트의 __name__ 변수는 "__main__" 으로 설정됩니다. * if __name__ == "__main__": 구문을 사용하면 모듈이 직접 실행될 때만 특정 코드를 실행하도록 할 수 있습니다. 이는 모듈이 다른 스크립트에서 임포트될 때는 실행되지 않게 하려는 경우에 유용합니다. * __main__ 이름을 활용하면, 스크립트가 모듈로 사용될 때와 직접 실행될 때의 동작을 분리할 수 있습니다. 예컨대, 모듈에 포함된 함수들을 다른 스크립트에서 임포트해 사용할 수 있으면서, 해당 모듈 자체도 독립적인 프로그램으로 실행될 수 있습니다. * __main__ 을 사용하는 주된 이유 중 하나는 코드의 진입점(entry point)을 명확하게 정의하여 코드의 가독성과 유지보수성을 향상시키는 것입니다. 이를 통해 개발자들은 프로그램의 시작점을 쉽게 찾을 수 있으며, 코드의 실행 흐름을 더 잘 이해할 수 있습니다. * __main__ 체크는 테스트 코드나 예제 코드를 모듈에 포함시킬 때도 유용하게 사용됩니다. 이 방법을 통해 모듈의 함수나 클래스가 올바르게 작동하는지 검증하는 코드를 모듈에 포함시키면서도, 모듈이 다른 곳에서 임포트될 때는 이러한 테스트 코드가 실행되지 않도록 할 수 있습니다. https://brunch.co.kr/@growthminder/132

재직자가 좋아한 글

CSS 클래스를 스마트하게 관리하는 방법: clsx 라이브러리 활용하기  |  최근에는 CSS-in-JS 같은 방식이 인기를 끌면서 전통적인 클래스를 사용하는 경우가 많지는 않은데요. 실제 개발 과정에서 프로젝트가 커지다보면 조건에 따라 다양한 스타일을 적용해야 하는 상황이 발생하기도 합니다. 이때 clsx 라이브러리가 도움이 될 수 있는데요. clsx 는 컴포넌트의 클래스 이름을 동적으로 결합하고 관리하는 과정을 단순화해줍니다. 이 라이브러리는 객체나 배열을 입력으로 받아, 조건부로 클래스 이름을 생성해줍니다. 예를 들어, 버튼에 '활성화' 상태를 표현하는 클래스를 추가하려면 다음과 같이 작성할 수 있습니다: clsx({ 'btn': true, 'btn-primary': isActive}); // 결과: "btn btn-primary" (isActive가 true인 경우) 또는 배열을 사용해 다음과 같이 표현할 수도 있습니다: clsx(['btn', isActive ? 'btn-active' : 'btn-inactive']); // 결과: "btn btn-active" 이처럼 clsx 를 사용하면, 여러 조건에 따른 클래스 이름을 간결하고 가독성 좋게 표현할 수 있습니다. 이 분야에서 clsx 와 함께 자주 언급되는 라이브러리가 classnames 인데요. 두 라이브러리는 사용법이 매우 비슷합니다. 그러나 clsx 는 성능 향상을 목표로 개발되어서 결과적으로 더 작은 번들 크기와 더 빠른 실행 속도를 제공합니다. 그러한 이유로 최근 npm 트렌드를 보면, clsx 가 classnames 의 인기를 추월한 것을 확인할 수 있는데요. 그렇다고 해서 기존 프로젝트에서 classnames 를 사용하고 있다면 굳이 clsx 로 변경할 필요는 없어보입니다. 이러한 성능 차이가 프로젝트 전체에 미치는 영향은 그리 크지 않을 수 있고, classnames는 classNames라는 좀 더 직관적인 함수 네이밍을 제공하는 이점도 있으니까요. 하지만 새로운 프로젝트를 시작한다면 트렌드 와 성능을 참고해서 clsx 의 사용을 고려해보는 것을 추천드립니다.

좋아요 10 저장 10

thumbnail