Multi-Threading
PySide6μ νμ©ν GUI μ΄ν리μΌμ΄μ
κ°λ°μμλ Multi-Threading μ μ©μ νμνλ€.
GUI μ΄ν리μΌμ΄μ μμ 볡μ‘νκ³ λ§μ κ³μ° μκ°μ μꡬνλ μμ μ μνν λ, λ°μμ±μ μ μ§νκ±°λ ν₯μμν€κΈ° μν΄ λ©ν°μ€λ λ©μ΄ μ¬μ©λλ€.
GUIλ₯Ό κ°λ μ΄ν리μΌμ΄μ μ μ¬μ©μκ° λ°μμν€λ eventλ₯Ό μ§μ° μμ΄ μ μνκ² μ²λ¦¬, μ¬μ©μμ μ λ ₯μ μ΅λν μ¦κ°μ μΌλ‘ λ°μν΄μΌ νκΈ° λλ¬ΈμΈλ°, μ¬κΈ°μ λ©ν°μ€λ λ©μ΄ ν° μν μ λ΄λΉνκ² λλ€.
Multi-Processingμ΄ μλMulti-Threadingμ μ¬μ©νλ μ΄μ ?- μ΄λ μ€λ λκ° νλ‘μΈμ€λ³΄λ€ κ°λ²Όμ΄ 컨ν μ€νΈ μ νμ κ°λ₯νκ² νκ³ , μ€λ λ κ° λ°μ΄ν° κ΅νμ΄ λ μ½κΈ° λλ¬Έ
1. λ°μμ± μ μ§
GUI μ΄ν리μΌμ΄μ μ λ©μΈ μ€λ λ (GUI Thread)λ event loopλ₯Ό μ€ν, μ¬μ©μμ μ λ ₯μ μ²λ¦¬νκ³ νλ©΄μ μ λ°μ΄νΈ νλ€.
λ§μ½ μ΄ μ€λ λμμ μκ°μ΄ μ€λ 걸리λ μμ μ μ€ννλ©΄, GUIκ° λ©μΆ° 보μ΄κ±°λ βμλ΅ μμβ μνκ° λ μ μμΌλ©° μ΄λ μ¬μ©μμκ² νλ‘κ·Έλ¨μ΄ μ μμλνλμ§λ₯Ό νμΈνκΈ° μ΄λ ΅κ² λ§λ€μ΄ λμ UXλ₯Ό μ 곡νκ² λλ€.
λ©ν°μ€λ λ©μ μ¬μ©νλ©΄ μ΄μ²λΌ μκ°μ΄ μ€λ 걸리λ μμ μ λ³λμ μ€λ λμμ μ²λ¦¬, λ©μΈ μ€λ λ, μ¦ λ©μΈ μ΄λ²€νΈ 루νκ° μνν λμνλλ‘ ν μ μλ€.
2. ν¨μ¨μ μΈ μμ μ¬μ©
νλμ μ»΄ν¨ν° μμ€ν μ λλΆλΆ λ©ν°μ½μ΄ νλ‘μΈμλ₯Ό μ¬μ©νλ€.
λ©ν°μ€λ λ©μ ν΅ν΄ μ΄λ¬ν λ©ν°μ½μ΄ μν€ν μ²μ μ₯μ μ μ΅λν νμ©ν μ μλ€.
3. λΉλκΈ° μμ μν
λ€νΈμνΉ, λμ©λ νμΌ μ²λ¦¬, 볡μ‘ν κ³μ° λ±κ³Ό κ°μ΄ λΉλκΈ°μ μΌλ‘ μννλ κ²μ΄ μ ν©ν μμ μ μννλ GUI μ΄ν리μΌμ΄μ μ κ²½μ°, λ©ν°μ€λ λ©μ μ¬μ©νλ©΄ μ΄λ¬ν μμ μ λ°±κ·ΈλΌμ΄λμμ μ€ννκ³ μλ£ μνλ₯Ό λ©μΈ μ€λ λμ μ리거λ κ²°κ³Όλ₯Ό μ λ¬νλ κ΅¬μ‘°λ‘ κ΅¬νν κ²½μ°, μ¬μ©μ UX κ²½νμ΄ ν¬κ² ν₯μλλ€.
4. νμμμ λ° μ·¨μ κ°λ₯ν μμ
- GUIμμ μνλλ μμ μ΄ λ§μ½ μ§λμΉκ² κΈ΄ μ€ν μκ°μ μꡬνλ κ²½μ°
- μ¬λ¬ λ€λ₯Έ μ΄μ λ‘ μ¬μ©μκ° μ€ν λμ€ μ·¨μν΄μΌ νλ κ²½μ°
λ©ν°μ€λ λ©μ μ¬μ©νλ κ²½μ° μ΄λ¬ν μμ λ€μ λ μ κ΄λ¦¬νκ³ , νμν κ²½μ° μ½κ² μ€λ¨μν¬ μ μλ€.
ꡬν λ°©λ²
PySide6 μμ λ©ν°μ€λ λ©μ ꡬννλ λ°©λ²μ ν¬κ² λ κ°μ§κ° μλ€.
- QThread ν΄λμ€λ₯Ό ν΅ν ꡬν
QRunnableκ³ΌQThreadPoolμ μ¬μ©νλ λ°©λ²
Reference
PySide6 Threading κ΄λ ¨ κΈ