본문 바로가기

멀티 프로세스

(2)
[ Python ] Thread와 Multiprocessing 차이점 Python Thread와 Multiprocessing 차이점 시작 전 테스트환경 살피기 Time 2017년 08월 18일 OS Linux(Ubuntu 16.04 LTS) Language Python 2.7 Python은 Thread를 이용한 병렬처리보다 process를 이용한 병렬처리를 더 선호한다. Thread들이 같이 공유하는 변수들에 대한 접근을 막기 위해 전체 변수들을 묶어 한번에 하나의 Thread만 일하는 방식( GIL )을 차영하였기 때문에 Multiprocess로 작업한느 것이 실행속도가 빠르다. Treading 장 점 메모리가 적게 필요함메모리를 공유함 ( 서로 상태를 공유하기 쉽다 )GIL을 이용해 병렬 처리가 가능I/O bound 애플리케이션에 옵션이 많다. 단 점 interrupt..
[ Deadlock ] 교착상태 Deadlock 교착상태 Multi process나 Thread는 공유 자원( 메모리, 파일, 디바이스 등 )을 사용하여 상태나 정보를 공유한다. Multi process나 Thread들은 경우에 따라 공유 자원을 동시에 사용하므로 동시성 문제가 발생한다. 이를 방지하기 위해 상호 배타적인 동기 매커니즘( Critical section, Mutex, Semaphore )을 사용한다.그런데 Multi process나 Thread들이 공유 자원을 배타적으로 이용하다보면 문제가 발생한다.일반적으로 잠금을 사용하면 공유 자원을 사용하는데 있어서 올바른 행동을 보장받을 수 있지만, 그럼에도 불구하고 공유 자원을 사용하는 Process나 Thread들은 어쩌다가 교착 상태( Deadlock )에 빠지게 된다. 위 ..