Python GIL(Global Interpreter Lock)
μ μ : Python μΈν°ν리ν°κ° ν λ²μ νλμ μ€λ λλ§ μ€ννλλ‘ μ ννλ λ©μ»€λμ¦μ΄λ€. μ΄λ₯Ό ν΅ν΄ Pythonμ λ©λͺ¨λ¦¬ κ΄λ¦¬λ₯Ό λ¨μννκ³ λκΈ°ν λ¬Έμ λ₯Ό μ΅μνμν¨λ€.
λ±μ₯ μ΄μ : νμ΄μ¬(CPython)μ λ©λͺ¨λ¦¬ κ΄λ¦¬ λ°©μμΈ μ°Έμ‘° μΉ΄μ΄ν
(reference counting)μ μ¬λ¬ μ€λ λκ° λμμ μ°Έμ‘° μΉ΄μ΄νΈλ₯Ό μμ νλ €κ³ ν λ, λ μ΄μ€ 컨λμ
(race condition)μ΄ λ°μνλ€. μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ CPythonμ GIL(Global Interpreter Lock)μ λμ
νλ€.
GILμ λ¬Έμ μ : λλΆλΆμ νμ΄μ¬ ꡬν체λ CPythonμ μ¬μ©νλ©°, μ΄ CPythonμμλ GILλ‘ μΈν΄ μ¬λ¬ μ€λ λμ λμ μ€νμ΄ μ€μ§μ μΌλ‘λ λΆκ°λ₯νλ€. λ©ν°μ½μ΄ νλ‘μΈμμμλ ν λ²μ νλμ μ€λ λλ§ μ€ννλλ‘ μ ννμ¬, μ€μ λ‘ λ³λ ¬ μ²λ¦¬λ₯Ό νμ§ λͺ»νκ² λ§λ λ€. μ¬λ¬ μ€λ λλ₯Ό λμμ μ€ννλλΌλ μ€μ λ‘λ ν λ²μ νλμ μ€λ λλ§ μ€νλλ©°, μ΄λ CPU λ°μ΄λ μμ
μμ λ³λͺ© νμμ μΌμΌν¨λ€.
(Python μΈμ μ¬λ¬ μΈμ΄λ€μ GIL μ ν μμ΄ λ³λ ¬ μ²λ¦¬λ₯Ό ν΅ν λ©ν°μ€λ λ©μ μ§μνλ€.)
GIL ν΄κ²° λ°©λ²: GIL λ¬Έμ λ₯Ό ν΄κ²°νλ ν κ°μ§ λ°©λ²μ λ©ν°νλ‘μΈμ±μ μ¬μ©νλ κ²μ΄λ€. κ° νλ‘μΈμ€λ λ
립μ μΈ GILμ κ°μ§λ―λ‘, μ΄λ₯Ό ν΅ν΄ λ³λ ¬ μ€νμ νμ±νν μ μλ€. multiprocessing λͺ¨λμ κ°κ°μ νλ‘μΈμ€κ° λ³λμ GILμ κ°μ§κΈ° λλ¬Έμ, μ€μ λ‘ μ¬λ¬ μμ
μ λμμ μ€νν μ μλ€. νμ§λ§ νλ‘μΈμ€ κ°μ ν΅μ κ³Ό λ©λͺ¨λ¦¬ 곡μ λ μ€λ λμ λΉν΄ λΉκ΅μ 볡μ‘νκ³ λΉμ©μ΄ λ λ§μ΄ λ λ€.