본문 바로가기

Programming/Python

쓰레드

쓰레드


이번에는 쓰레드에 대해서 알아보도록 하겠습니다.

쓰레드는 프로세스 내에서 흐름 단위를 말합니다. 한 프로그램은 하나의 쓰레드를 가지지만 둘 이상의 쓰레드도 실행 할 수 있습니다. 이러한 것을 멀티 쓰레드라고 합니다.





thread.start_new_thread()를 이용해서 thread를 만듭니다.

for문을 실행하면서 i 값을 make_thread()에 넘겨주죠. 소스코드를 실행해서 작성한 후에 실행을 해보면 위와 같은 출력 결과가 나오지는 않습니다.

왜냐하면 CPU마다 처리하는 순서가 다른 것도 있지만 Global Interpreter Lock(GIL)이라는 것이 존재합니다.


최근에 듀얼코어, 쿼드코어를 지나 옥타코어, 데카코어 그 이상까지도 나오는 추세인데, 스마트폰 마저 옥타코어를 사용하고 있죠.

여러 개의 코어 속 쓰레드가 일을 처리해서 결과를 출력합니다.


GIL은 그렇지 않습니다. python은 GIL 방식을 사용하는데 한 개의 프로세스만 일을 한다. 이러한 이유는 인터프리터 구현이 쉽고, C/C++ 확장 모듈을 만들기 쉽게 해줍니다.

여러 쓰레드를 사용하면 결과를 출력하는데 오히려 많은 시간이 걸리느데 이러한 것을 극복하는 방법은 멀티프로세스를 사용하는 것입니다.


'Programming > Python' 카테고리의 다른 글

시그널  (0) 2016.03.14
쓰레딩, 큐  (0) 2016.03.14
프로세스 만들기  (0) 2016.03.14
파일 목록 출력  (0) 2016.03.14
파일 입출력  (0) 2016.03.14