Python
single threading vs multi threading
mintuchel
2025. 9. 28. 20:33
Python에서는 멀티쓰레딩을 사용하면 오히려 더 느려질 수 있다.
왜냐하면 Python 자체가 멀티쓰레딩을 지양하는 식으로 설계되어있기 때문이다.
Python에는 GIL이라는 한번에 한 개의 쓰레드만 실행할 수 있게 하는 일종의 Lock이 있다.
그래서 실제로는 멀티쓰레딩 쓰려고 쓰레드 여러개 만들어놓고 각 쓰레드마다 각기 다른 작업 시켜놔도
결국에는 GIL때문에 한개의 쓰레드만 실행하게 된다.
따라서 오히려 멀티쓰레딩 때문에 추가된 Context Switching 오버헤드때문에
싱글쓰레딩보다 느려질 수 있다.
따라서 Python(FastAPI)에서는 대부분 멀티쓰레딩 효과를
→ 싱글쓰레드 내에 있는 이벤트 루프를 통한 동시성 프로그래밍으로 실현한다.
싱글쓰레드 내부에서 코루틴 객체들을 생성하고 이를 이벤트 루프에 등록함으로써 비동기 프로그래밍 + 동시성 프로그래밍을 구현할 수 있다.