반응형 Python134 Python - 글로벌 인터프리터 락(GIL) 제거를 위한 주요 기술 Python에서 글로벌 인터프리터 락(GIL) 은 동시성을 없애서 충돌이 없도록 하여, 쉽게 코딩할 수 있었지만, 그만큼 성능적으로 특히 멀티 코어에서 약점을 보였다. 하여 Python 3.12버전부터 GIL 없이 실행하는 방법은 주로 PEP 703에서 제안된 여러 기술을 통해 가능하게 되었는데, GIL은 CPython에서 여러 스레드가 동시에 Python 코드를 실행하는 것을 방지하는 메커니즘으로, 멀티코어 CPU를 효율적으로 활용하지 못하던 부분이 어떻게 가능하게 된 것일까? 관련하여 알아보도록 하자.GIL 제거를 위한 주요 기술멀티스레드에서 가장 큰 문제는 바로 변수 접근이라고 할 수 있다. 따라서 이를 Python에서는 객체가 참조되는지를 카운트하는 방식을 채택했다고 보면된다. 즉 삭제해도 되는 .. 2025. 4. 9. FastAPI - Docs, Redoc 비활성화 하기 오늘은 간단한 주제인데, FastAPI를 이용해서 API Interface 확인을 위해서 Docs, Redoc많이 활성화해서 사용하는데, 실제 보안적으로 생각해보면, 내 인터페이스 전체를 노출하는건 상당한 위험이 될 수 있다.API 호출할 수 있는 파라메터를 전부 제공해주기 때문에, 다양한 공격 시나리오 및 테스트할 수 있는 루트를 제공하는 것이나 마찬가지가 된다. 따라서 대외적으로 API 서비스를 하지 않는 거라면 API 상세를 없애는게 바람직하다. 비활성화하는 방법은 간단하다.FastAPI app 생성 시점에 docs_url과 redoc_url 를 생성하지 않도록 하면된다.app = FastAPI(docs_url=None, redoc_url=None)그럼 아래와 같이 기존 Docs, Redoc 주소가.. 2025. 3. 28. Python - (pymysql.err.OperationalError) (1241, 'Operand should contain 1 column(s)') INSERT (pymysql.err.OperationalError) (1241, 'Operand should contain 1 column(s)') 이 오류의 정확안 의미는 간단하다.내가 행하는 행위중 컬럼 하나 혹은 그 이상이 잘못되었다는 것이다.이 때 확인해보기 좋은것은 당시 입력값을 보여주는데, 하나씩 값을 확인해보면, 분명 잘못된 컬럼 값이 있음을 알 수 있을 것이다.주의하게 봐야 하는것으로 TSQL 문으로 넣을 때 규칙을 알고 있으면 좋은데 - 기본적으로 컬럼 과 입력값 을 쌍따옴표로 구분하기 때문에 이것이 잘 지켜지는지 보면 좋다.필자가 오류 내용 찾았던 값으로 msg 컬럼에 값을 넣는데, '(따옴표)으로 시작해야 하는데 입력값에 문제가 있다는 것을 알게 되었다.'msg': (False, '', '안녕이렇.. 2025. 1. 13. Python - uv 패키지, 프로젝트 관리자 설치 및 사용법 오늘은 요즘 핫하다고 할 수 있는 uv를 이용해서 설치와 기본 사용법에 대해서 설명해보고자 한다.uv는 Python 패키지와 프로젝트를 관리할 수 있는데, pip 의 차기 버전이라고 할 수 있을 정도로 빠른 속도와 관리의 편의성을 제공한다.pip의 기존 문제점이라고 하기는 어렵지만, pip는 쉽게 사용할 수 있는 장점이 있는 반면에 프로젝트별 버전관리의 불편함과 느린 속도가 큰 문제점이다. uv는 프로젝트 관리와 패키지 관리를 일원화 하여 편의성을 높이고,(npm 같은 느낌)패키지를 설치하는데도 기존 pip보다 빠르게 구성되어 많은 최적화가 되어진 모습을 보여준다.또 기존에 Python의 버전 설치에 대한 부분도 함께 해결된다는 점은 큰 장점이라고 생각되며, 패키지 관리 역시 요즘 통합되고 있는 pypr.. 2025. 1. 8. Python - "datetime" 클래스의 "utcnow" 메서드는 더 이상 사용되지 않습니다. Python 3.12 버전부터 경고가 나타나는데 utcnow가 사라진다는 것이다.Python 기본적인 타임 포맷은 타임값이 들어가지 않는 방식을 채택하고 있었다.>>> from datetime import datetime, timezone>>>>>>>>> print(datetime.utcnow())2024-12-10 00:52:07.010333>>>>>> print(datetime.now(timezone.utc))2024-12-10 00:52:07.550513+00:00그리고 타임값은 timezone을 사용할 때만 추가되었다.Python에서는 이 부분이 혼선을 초래한다고 판단하여 utcnow를 제거하고, now를 사용하도록 권장하고 있는 것으로 보인다.하지만 이는 과거 코드들, utcnow 를 사용하여 .. 2024. 12. 10. Python 3.12 - 주요 내용과 예제로 살펴보기 Python 3.12의 주요 변경 사항을 요약하면 다음과 같다새로운 기능 및 개선 사항1. 유연한 f-string 구문 분석:이제 f-string 내부에서 더 많은 표현식을 사용할 수 있습니다. 여러 줄 표현식, 주석, 백슬래시, 유니코드 이스케이프 시퀀스 등을 포함할 수 있게되었다. #아래와 백슬래쉬를 쉽게 사용이 가능하게 되었다.>>> a = ["hello", "world"]>>> f"{'\n'.join(a)}"'hello\nworld'2. 타입 주석 개선:제네릭 클래스와 함수에 대한 새로운 타입 주석 구문이 도입되었다 (PEP 695)이는 제네릭 타입을 사용하는 구문을 더 직관적이고 명확하게 만들어, Python 개발자들이 타입 힌팅을 더 쉽게 사용할 수 있도록 하는 것을 목표로 한다.# 기존 방식.. 2024. 11. 11. 이전 1 2 3 4 5 ··· 23 다음 반응형