반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트 알고리즘
- 티스토리챌린지
- next.js
- 오블완
- 자바스크립트 배열
- js 알고리즘
- 자바스크립트 정렬
- django
- python supseruser
- TS
- 맨해튼거리
- 알고리즘
- Python
- 프로그래머스 자바스크립트
- django superuser
- 정렬 알고리즘
- python itertools
- admin site
- 깃허브
- 타입스크립트
- Javascript sort
- Javascript 정렬
- 프로그래머스
- TypeScript
- binary search
- 자료구조
- JavaScript
- python 스레드
- MySQL
- node.js
Archives
- Today
- Total
FE PARADISE
[Python] Threads 본문
반응형
Thread 스레드
하나의 실행 흐름을 의미한다.
print("Hello")
print("World")
print("Hehe")
이 코드를 실행하면 순서대로
"Hello"
"World"
"Hehe"
문자열이 출력된다.
여기서 Thread를 추가하면 여러 작업을 각각 다른 Thread에서 실행할 수 있다.
import threading
def work():
print("Working")
thread = threading.Thread(target=work)
thread.start()
이 코드를 살펴보면
thread = threading.Thread(target=work)
work 함수를 실행할 스레드를 생성했다.
이후
thread.start()
해당 코드 호출로 Thread가 실행된다.
thread.start()
thread.run()
이때 start와 run의 차이에 유의해야한다.
start : 새로운 스레드를 생성하여 target함수 실행
run: 현재 스레드에서 target함수 실행
import threading
import time
def work(name):
for i in range(3):
print(name, i)
time.sleep(1)
thread1 = threading.Thread(target=work, args=("A",))
thread2 = threading.Thread(target=work, args=("B",))
thread1.start()
thread2.start()
위 코드를 실행하면 다음과 같이 두 스레드가 번갈아가며 실행될 수 있다.
A 0
B 0
A 1
B 1
A 2
B 2
만약 스레드를 사용하지 않았다면
A 0
A 1
A 2
B 0
B 1
B 2
이와 같이 한 작업이 종료된 이후 다음 작업이 진행된다.
join()
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("모든 작업 완료")
스레드 사용 시 많이 쓰는 join은 해당 Thread가 끝날 때까지 기다려라 를 의미한다.
join을 사용하지 않으면 '모든 작업 완료' 문자열이 모든 스레드 작업이 끝나기도 전에 먼저 출력될 것이다.
반응형