[Python 3.13] Python에서 GIL을 비활성화 할 수 있다?
·
Minding's Programming/Knowledge
Python 3.13과 GILMedium을 구독하면서 읽게된 글을 통해 Python 3.13 버전이 출시되었다는 것을 알게 되었는데, 그 중에서도 놀라운 글을 보게되었다. 바로 Python 3.13에서는 GIL(Global Interpreter Lock)을 비활성화할 수 있다는 것이다. GIL은 Python의 큰 특징 중 하나이기도 했고, 대표적인 한계점이기도 했기 때문에 이 소식은 꽤나 놀라웠다. GIL은 프로세스 별로 여러 스레드가 동시에 코드를 실행하지 못하도록 하여 스레드 실행을 동기화하는 매커니즘이다. GIL을 사용하는 인터프리터인 Python은 멀티코어 프로세서가 실행되어도 항상 하나의 스레드가 실행된다. 그래서 Python에서는 멀티 프로세싱 대신 멀티 스레딩 방식을 주로 사용한다. 위 글에..
[FastAPI] 파이썬 멀티 프로세싱
·
Minding's Programming/FastAPI
해당 글은 인프런의 ' 파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)'을 수강하며 정리한 글이다. 파이썬 멀티 프로세싱 동시성과 병렬성 개념 정리 와 파이썬 멀티 스레딩 사용해보기를 통해서 파이썬이 왜 병렬적 멀티 스레딩 연산을 하지 못하는 지에 대해 알아보았다. '동시성'의 개념을 이용한 I/O bound 코드에 있어 멀티 스레딩은 가능했지만, 파이썬은 GIL이라는 개념이 있기 때문에 스레드로 병렬 연산을 하지 못했다. (Cpu bound 코드와 같이 하나의 계산을 여러 번 반복하는 일 등) 파이썬에서 병렬 연산을 위해서는 프로세스 자체를 복사해 사용하는 '멀티 프로세싱'을 사용할 수 있다. 스레드 연산으로는 구현하기 힘든 병렬 연산을 멀티 프로세싱에서는 할 수 ..
[FastAPI] 동시성과 병렬성 개념 정리
·
Minding's Programming/FastAPI
FastAPI를 공부하는데 필요한 동시성과 병렬성에 대해 정리해보았다. 해당 글은 인프런의 ' 파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)'을 수강하며 정리한 글이다. 동시성 (Concurrency) - 동시성은 한 번에 여러 작업을 동시에 다루는 것을 의미한다. - 즉, 하나의 주체가 스위칭을 통해 여러 작업을 진행한다는 것이다. (코루틴이 대표적인 예시) - A작업을 하는 동안 B작업으로 스위칭, A작업이 끝나지 않았다면 C작업으로 스위칭... - 멀티 스레딩의 개념이지만 싱글 스레드에서 사용되기도 한다. - 싱글 코어뿐 아니라 멀티 코어에서도 동시성 사용 가능하다. - 한 주체가 임의적으로 여러 작업을 진행하는 것이기때문에 일종의 논리적 개념이라고 할 수 있..