본문 바로가기

Thread

(5)
👻코루틴 vs 스레드 내용 이전 하였습니다!다음 링크에서 내용 확인 부탁드립니다! 👇 👇 👇 👇 https://proni.tistory.com/entry/%EC%BD%94%EB%A3%A8%ED%8B%B4-vs-%EC%8A%A4%EB%A0%88%EB%93%9C
[ Python ] Thread, 쓰레드 데이터 공유하지 않는 방법 PythonHow doesn't a Data sharing at Threads#Ubuntu 16.04 LTS#Python 3.5.2 ThreadThread 에서는 기본적으로 자원을 공유한다.그래서 딱히 해주는 것 없이도 그냥 자원을 공유하게 된다. 하지만 간혹가다, Thread를 사용하는데 자원 값이 겹치면 안 되는 경우가 생긴다.멀티 프로세스로 만들기는 너무 거창할 때 주로 그런 것 같다. 이 경우 지역 변수, 클래스 생성 등과 같은 방법으로 자원의 공유? 간섭?을 막을 수 있다.솔직히 말로 뭐라고 설명해야 하는지 잘 모르겠다... 그냥.. 자원이 겹치지 않게 하는 방법이라고 해야할 까.. 머리아픔.... 동작 가능한 소스 코드를 참조내용 1.GitHub 에 올려두었으니 해보고 싶은 분들은 ㄱ.ㄱ !!..
[ 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..
[ Python ] Threading GIL 정의 Python부제목 시작 전 테스트환경 살피기 Time 2017년 08월 24일 OS Virtual Box - Linux(Ubuntu 16.04 LTS) Language Python 2.7 GIL ( Global Interpreter Lock ) 의 약자로 하나의 파이썬 인터프리터에서는 하나의 작업만 실행이 가능한 것이다. 하나의 인터프리터가 실행이 될 때, global 변수로 제어를 하기때문에, 여러 Thread가 동시에 수행할 경우 데이터가 엉망이 되기 때문에 한번에 하나의 Thread만이 인터프리너 내부 global 변수에 접근가능하도록 해 놓은 것이다. 따라서 Multi Thread를 사용할 경우 다른 Thread로 들어가기 전에 Lock을 걸어놓고 움직이기 때문에 결국 한번에 하나의 Thread가..
[ Deadlock ] 교착상태 Deadlock 교착상태 Multi process나 Thread는 공유 자원( 메모리, 파일, 디바이스 등 )을 사용하여 상태나 정보를 공유한다. Multi process나 Thread들은 경우에 따라 공유 자원을 동시에 사용하므로 동시성 문제가 발생한다. 이를 방지하기 위해 상호 배타적인 동기 매커니즘( Critical section, Mutex, Semaphore )을 사용한다.그런데 Multi process나 Thread들이 공유 자원을 배타적으로 이용하다보면 문제가 발생한다.일반적으로 잠금을 사용하면 공유 자원을 사용하는데 있어서 올바른 행동을 보장받을 수 있지만, 그럼에도 불구하고 공유 자원을 사용하는 Process나 Thread들은 어쩌다가 교착 상태( Deadlock )에 빠지게 된다. 위 ..