한 줄로 요약하자면 파이썬 인터프리터를 동시에 사용하지 못하도록 만드는 것.
자바에도 그렇듯 파이썬에도 가비지 컬렉터(Garbage Collector)가 있다. 이 가비지 컬렉터는 참조하지 않는 객체들을 메모리에서 제거하는 역할을 하는데 문제는 멀티스레드의 경우, 그것을 카운팅하는 것이 쉽지 않다는 것이다. 전문 용어로 경쟁 상태(Race Condition)로 동시 참조문제로 인해 이 카운팅이 꼬일 수가 있다.
그렇다고 이것을 해결하기 위해 모든 객체에다가 뮤텍스 같은 잠금장치를 걸어놓고 한 사람에 한 명씩 들어오세용~ 하다간 성능 저하 + 개발자의 폭발적인 실수가 예상될 듯 뻔하다.
아 참 그리고 파이썬 인터프린터는 프로세스 당 하나씩 있으므로 한 순간에 프로세스 안에 한 스레드를 실행시켜줄 수 있다.
뭐 멀티 프로세스에도 파이썬 인터프린터가 오직 시스템 당 1개만 실행되고 이런 건 아니다.
멀티프로세싱으로 진행하면 각각의 프로세스 안에 파이썬 인터프리터가 상주하게 되므로 GIL 문제가 발생하지 않는다.
'Python' 카테고리의 다른 글
Python을 이용한 Slack API 사용해보기 (단순 메시지 삭제 기능 구현) (0) | 2023.07.10 |
---|