νλ‘μΈμ€μ μ€νλ¨μμ
λλ€.
νλ‘μΈμ€λ μ΅μ νλ μ΄μμ μ€λ λλ₯Ό κ°μ§λλ€.
νλ‘μΈμ€ : νλ‘κ·Έλ¨μ΄ λ©λͺ¨λ¦¬μ μ¬λΌκ°μ μ€ν μ€μΈ κ²
νμ΄μ¬μμλ λ¨ νλμ λ©μΈ μ€λ λλ§ μ‘΄μ¬ν©λλ€.
κ·Έλμ λ©ν° μ€λ λ
λ₯Ό μ΄μ©νλ €λ©΄ threading λͺ¨λμ νμ©ν΄μΌν©λλ€.
λ©ν° μ€λ λ : νλμ νλ‘μΈμ€ μμ μ€λ λκ° μ¬λ¬κ°
μ€λ λλ₯Ό μ¬μ©νλ©΄ λ κ°μ§ μ΄μμ ν¨μλ₯Ό λμμ λμμν¬ μ μμ΅λλ€.
π λ©ν° μ€λ λλ₯Ό μ¬μ©νλ©΄, μ€λ λ κ° λ°μ΄ν° 곡μ 볡μ‘λκ° μ¦κ°ν©λλ€.
κ·Έλ κΈ°μ λ½κ³Ό λ°λ λ½μλ μ κ²½μ μ¨μΌν©λλ€.
λ½ : μμμ λν μ κ·Όμ μ ννλ λ©μ»€λμ¦
λ°λ λ½ : μλ‘ κ°μ λ½μ΄ λ¬Άμ¬ μμ
queue λͺ¨λμ μ¬μ©ν΄μΌν©λλ€. queueλ FIFO λ°©μμΌλ‘ μ€λ λκ° μλ λμμλ νλ‘κ·Έλ¨ μ’ λ£κ° λμ§ μμ΅λλ€.
import threading
import time
# μ€λ λ λͺ¨λ μν¬νΈ
class Worker(threading.Thread):
# threadingμμ λ΄μ₯ λͺ¨λμΈ Threadλ₯Ό μμ
def __init__(self, name):
super().__init__()
self.name = name
def run(self):
# μ€λ λλ₯Ό ꡬλνκΈ° μν΄μλ ν¨μλͺ
μ runμΌλ‘ ν΄μΌν¨
# start() λ©μλλ‘ thread κ°μ²΄ μ€ν
print("sub thread start ", threading.currentThread().getName())
time.sleep(3)
print("sub thread end ", threading.currentThread().getName())
print("main thread start")
for i in range(5):
name = "thread {}".format(i)
t = Worker(name) # sub thread μμ±
t.start() # sub threadμ run λ©μλλ₯Ό νΈμΆ
print("main thread end")
λ°λͺ¬ μ€λ λλ λ©μΈ μ€λ λκ° μ’
λ£λ λ, λ³ΈμΈμ μ€ν μνμ μκ΄μμ΄ μ’
λ£λλ μλΈ μ€λ λμ
λλ€.
(ex. μλΈ μ€λ λλ₯Ό ν΅ν΄ νμΌμ λμμ λ€μ΄λ‘λ λ°λλ°, λ€μ΄ λ°λ μ¬μ΄νΈ μ체(λ©μΈ μ€λ λ)λ₯Ό μ’
λ£νλ©΄ λ€μ΄ λ°κ³ μλ νμΌ(μλΈ μ€λ λ)λ μ μ§ λ μ± κ°μ΄ μ’
λ£λλ κ²)
λ°λͺ¬ μ€λ λλ₯Ό μ€μ νλ €λ©΄
threading λͺ¨λμμ daemon μμ±μ Trueλ‘ λλ©΄ λ©λλ€.
μμ μ½λμμ daemon μμ±μ μ€ λ€, λκ° μ½λλ₯Ό λΉκ΅ν΄μ μ€νν΄λ³΄λ©΄ μ°¨μ΄λ₯Ό μ μ μμ΅λλ€.
import threading
import time
class Worker(threading.Thread):
def __init__(self, name):
super().__init__()
self.name = name
def run(self):
print("sub thread start ", threading.currentThread().getName())
time.sleep(3)
print("sub thread end ", threading.currentThread().getName())
print("main thread start")
for i in range(5):
name = "thread {}".format(i)
t = Worker(name) # sub thread μμ±
t.daemon = True # λ°λͺ¬ μ€λ λ
t.start() # sub threadμ run λ©μλλ₯Ό νΈμΆ
print("main thread end")
μλ³΄κ³ κ°λλ€