GIL(Global Interpreter Lock)

code_able·2022년 11월 23일
0

GIL은 특정 시점에서 언제나 하나의 쓰레드만 실행하도록 만든 것이다.

python에서 GIL 채택이유

인터프리터는 객체에 참조가 생기거나 해제될 때 마다 reference count를 +-(증감)하게 된다. 쓰레드간에 공유하는 객체가 있다면 경쟁 상태가 되므로 모든 객체에 대해서 LOCK을 걸어 관리한다.

python 멀티쓰레드

python의 이러한 GIL정책으로 CPU Bound에선 멀티스레드의 성능을 기대 할 수 없다 그치만 IO Bound에선 멀티스레드의 성능을 기대할 수 있다.

CPU Bound에서 병렬 처리를 해야 한다면 멀티프로세싱을 사용해 여러 코어를 사용 할 수 있다.

  • 멀티쓰레드 - IO Bound
  • 멀티프로세스 - CPU Bound
profile
할수 있다! code able

0개의 댓글