Python 강좌 : 제 31강 - 쓰레드
쓰레드(Thread)
쓰레드(Thread)
는 프로세스에서 실행되는 흐름의 단위를 의미합니다.
일반적으로 프로그램은 하나의 쓰레드를 갖고서 알고리즘이 진행됩니다.
만약, 한 번에 두 가지 이상의 문제를 해결하기 위해선 두 개 이상의 쓰레드를 구동해야합니다.
이러한 실행 방식을 멀티쓰레드(Multi-Thread)
라 부릅니다.
서브 쓰레드(Sub-Thread)
- 결과
- START
first_task : 0
first_task : 1
second_task : 0 0
first_task :ENDsecond_task : 2
first_task : 3
first_task :
4
1 1
second_task : 2 2
second_task : 3 3
second_task : 4 4
멀티 쓰레드
를 구성하기 위해선 서브 쓰레드
를 구성해야 합니다.
서브 쓰레드
를 사용하면 기존의 직렬 구조에서 병렬 구조로 연산이 가능합니다.
쓰레드
를 사용하기 위해선 threading
모듈을 포함시킵니다.
쓰레드
는 threading
모듈의 Thread
클래스로 실행시킬 수 있습니다.
쓰레드 클래스는 threading.Thread(target=함수, args=(함수의 매개변수))
입니다.
args
는 튜플만 지원하며, 하나의 매개변수를 전달하는 경우, 쉼표(,)
를 추가해 튜플로 설정합니다.
출력 결과에서 확인할 수 있듯이 print("END")
구문이 먼저 출력됩니다.
또한 first_task
함수와 second_task
가 별도의 쓰레드에서 연산되는 것을 알 수 있습니다.
데몬 쓰레드
- 결과
- START
first_task : 0
first_task : 1
first_task : 2
first_task : 3END
second_task : 0 0
first_task :second_task : 1 14
second_task : 2 2
second_task : 3 first_task :3 5
first_task :second_task : 6 4 4
first_task : 7
first_task : 8
first_task : 9
first_task : 10
first_task : 11
first_task : 12
first_task : 13
…
first_task : 752
first_task : 753
first_task : 754
first_task : 755
first_task :
데몬 쓰레드(Daemon-Thread)
란 메인 쓰레드가 종료되면 같이 종료되는 쓰레드를 의미합니다.
서브 쓰레드
는 메인 쓰레드가 종료되도 연산을 끝까지 진행합니다.
하지만, 데몬 쓰레드는 메인 쓰레드가 종료되면 연산을 중단합니다.
쓰레드의 daemon
멤버의 값을 True
로 설정하면 데몬 쓰레드가 됩니다.
출력 결과에서 확인할 수 있듯이 first_task : 756
를 출력하다 종료합니다.
print("END")
구문을 출력됐지만, 조금 더 결과가 출력되는 이유는 print("END")
이후에 메인 쓰레드가 종료되는 시간까지 포함됩니다.
그러므로, END 출력 이후, 메인 쓰레드가 종료될 때 까지 연산을 진행합니다.
- Tip :
daemon
의 기본값은False
입니다.
댓글 남기기