파이썬 멀티프로세싱 vs 스레드
멀티 프로세싱
장점
-
별도의 메모리 공간 사용가능
-
코드가 간단함
-
여러 CPU와 코어 활용
-
Cpython 에서 GIL 제한 피할수있음
-
자식 프로세스의 중단 혹은 킬 가능
-
파이썬 multiprocessing 모듈은 threading.Thread와 비슷한 인터페이스를 가진 유용한 추상화를 포함
-
CPU 바인딩 프로세싱을위한 cPython의 필수 기능
-
가장 큰 장점은 프로세스간의 격리, 프로세스 충돌시 멀티프로세스는 서로에 대해 영향을 주지않지만 스레드는 모두 종료되어버리거나 데드락이 생김
단점
- 자원이 많이 사용됨
멀티 스레딩
장점
-
가볍다, 메모리 부족에서유용
-
공유되는 메모리, 다른 컨텍스트에서 쉽게 상태에 엑세스 가능
-
반응형 UI를 쉽게 만들수있음
-
GIL 를 적절히 해제하는 CPYTHON C 확장모듈은 병렬로 실행
단점
-
GIL 의 적용을 받음
-
중단할수없거나 스레드를 죽일수없음
-
코드는 일반적으로 이해하기 어려움
-
1을 주의해야함
출처 : https://www.it-swarm.dev/ko/python/%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8B%B1%EA%B3%BC-%EC%8A%A4%EB%A0%88%EB%94%A9-%ED%8C%8C%EC%9D%B4-%EB%B9%84%EA%B5%90/969791624/