Python

single threading vs multi threading

mintuchel 2025. 9. 28. 20:33

Python에서는 멀티쓰레딩을 사용하면 오히려 더 느려질 수 있다.

왜냐하면 Python 자체가 멀티쓰레딩을 지양하는 식으로 설계되어있기 때문이다.

 

Python에는 GIL이라는 한번에 한 개의 쓰레드만 실행할 수 있게 하는 일종의 Lock이 있다.

그래서 실제로는 멀티쓰레딩 쓰려고 쓰레드 여러개 만들어놓고 각 쓰레드마다 각기 다른 작업 시켜놔도

결국에는 GIL때문에 한개의 쓰레드만 실행하게 된다.

 

따라서 오히려 멀티쓰레딩 때문에 추가된 Context Switching 오버헤드때문에

싱글쓰레딩보다 느려질 수 있다.

 

따라서 Python(FastAPI)에서는 대부분 멀티쓰레딩 효과를

싱글쓰레드 내에 있는 이벤트 루프를 통한 동시성 프로그래밍으로 실현한다.

 

싱글쓰레드 내부에서 코루틴 객체들을 생성하고 이를 이벤트 루프에 등록함으로써 비동기 프로그래밍 + 동시성 프로그래밍을 구현할 수 있다.