A thumbnail was created from banner.godori.dev
νμ΄μ¬μ΄ μ΄λ»κ² μ½λλ₯Ό μ€ννλμ§ κΆκΈν©λλ€.
μλλ©΄ λ©΄μ λ μ§λ¬Έμ λ°μκΈ° λλ¬Έμ΄μ£ π»
μ λλ‘ λλ΅ν κ² κ°μ§ μμ μ°μ°ν¨μ μ»μ΄ λ΄κ³ μ
μΆκ°λ‘ λ 곡λΆνμ¬ μ λ¦¬ν΄ λ³΄μμ΅λλ€.
λ΄μ©μ λ§μ λΆλΆμ μλμ κ²λ€μ μ°Έκ³ νμ΅λλ€.
νμ΄μ¬ μ½λλ₯Ό μ€ννλ €λ©΄ λΉμ°νμ§λ§, νμ΄μ¬ μΈν°ν리ν°κ° μμ΄μΌ ν©λλ€.
νμ΄μ¬ μΈν°ν리ν°λ ννμ΄μ§μμ λ€μ΄λ‘λ λ°κ±°λ
OS λ³λ‘ μ 곡λλ ν¨ν€μ§ 맀λμ λ₯Ό ν΅ν΄μ μ€μΉν μ μμ΅λλ€.
νμ΄μ¬μ μ€μΉνλ©΄, μΈν°ν리ν°μ λ΄μ₯ μ§μ λΌμ΄λΈλ¬λ¦¬ λ±μ΄ μ€μΉλ©λλ€.
μ¬κΈ°μ μΈν°νλ¦¬ν° λ, νμ΄μ¬ μ½λλ₯Ό μ€ννλ μννΈμ¨μ΄ μ
λλ€.
μΈν°ν리ν°λ μ΄λ€ μΈμ΄λ‘λ ꡬνν μ μμ΅λλ€.
νμ΄μ¬μ μ€ννλ μΈν°νλ¦¬ν° μ€μλ μ¬μ§μ΄
νμ΄μ¬μΌλ‘ μμ±ν PyPy λΌλ μΈν°ν리ν°κ° μλ κ² μ²λΌ λ§μ΄μ£ .
(PyPy μ λ‘κ³ λ κ·Έλμ μΈμ§ λ±μ΄ λ±μ λ¬Όκ³ μμ΅λλ€ ν¬μ)
μλ¬΄νΌ μλ νμΌμ μ΄λ €λ©΄ MS Word κ° μμ΄μΌ νλ μ΄μΉμΈκ° λ΄ λλ€ νκ³ μΌλ¨μ λμ΄κ°μλ€.
.py
νμ₯μλ‘ μ€ν κ°λ₯ν μ½λλ₯Ό λ§λ€λ©΄ λ©λλ€.
μ€νλ₯Ό λ΄μ§ μκ³ , λ¬Έλ²μ μ μ§μΌ python app.py
λ‘ μ€ννμλ λ¬Έμ μμ΄ λμνλ μ½λ λ§μ΄μ£ !
λΉμ μ νμ΄μ¬ μ½λ, λ°μ΄νΈμ½λλ‘ λ체λμλ€
python app.py
λ₯Ό μ€ννλ©΄ μλμ κ°μ μΌμ΄ μΌμ΄λ©λλ€.
λ°μ΄νΈ μ½λλ‘ μμ€ μ½λλ₯Ό μ»΄νμΌ νλ κ³Όμ μ κ·Έ μ νν λμμ μ μ μμ΅λλ€.
μ»΄νμΌνλ€λ κ²μ, μμ€ μ½λλ₯Ό ν΄μνμ¬ μνλ μνλ‘ λ³ν νλ κ²μ μλ―Ένκ³
νμ΄μ¬μμ μ»΄νμΌμ μμ€ μ½λλ₯Ό μ μμ€μ, νλ«νΌ λ
립μ μΈ(!) μ½λλ‘ λ³ν νλ κ²μ μλ―Έν©λλ€.
νμ΄μ¬μ μ»΄νμΌ κ³Όμ μ μλμ κ°μ΅λλ€. (μ ννμ§ μμ μ μμ΅λλ€)
μ΄ κ³Όμ μ κ±°μΉκ³ λλ©΄, .pyc νμΌμ΄ μμ± λ©λλ€.
.pyc
νμΌμ νμ΄μ¬ 3.2 λ²μ μ΄μ μλ .py
νμΌκ³Ό κ°μ κ²½λ‘μ μμ±λκ³
3.2 μ΄ν λ²μ μμλ __pycache__
λλ ν°λ¦¬ μλμ μμ± λ©λλ€.
.pyc
νμΌμ λ€μκ³Ό κ°μ κ²½μ°μ μ μ©νκ² μ¬μ©ν μ μμ΅λλ€
.pyc
νμΌλ‘ μ»΄νμΌλ κ²λ§ λ°°ν¬)μΆκ°
.pyc νμΌμ python app.py
μ κ°μ λͺ
λ Ήμ΄λ‘ μ€ν νλ€κ³ λ°λμ μμ± λλ κ²μ μλλλ€.
.py
νμΌμ΄ λ€λ₯Έ μ€ν¬λ¦½νΈμ μν΄ import λμμ κ²½μ°μλ§ μμ± λ©λλ€.
import λ¬Έμ΄ νΈμΆλμμ λλ μλμ κ°μ νμΈμ ν©λλ€
β ν λ§λλ‘, μμ€ μ½λκ° λ³κ²½ λλ©΄ μλμΌλ‘ μ .pyc λ‘ κ°±μ ν©λλ€
β λνν ν둬ννΈ(REPL) νκ²½μμ μ
λ ₯ν μ½λμ λν΄μλ .pyc νμΌμ μμ±νμ§ μμ΅λλ€
PVM μ νμ΄μ¬μ λ°νμ μμ§ μ
λλ€.
νμ΄μ¬ μμ€ν
μ μΌλΆμ΄κΈ° λλ¬Έμ λ³λμ μ€μΉκ° νμνμ§ μκ³ , νμ μ‘΄μ¬ ν©λλ€.
μμ€ μ½λλ₯Ό .pyc
μ κ°μ λ°μ΄νΈ μ½λ ννλ‘ λ³νν λ€ PVM μΌλ‘ μ λ¬νλ©΄
νμ΄μ¬ κ°μ λ¨Έμ μ μ΄κ²μ μ€νν΄ μ€λλ€.
μΆκ°λ‘, νλ‘μ¦ λ°μ΄λ리λ λ΄κ° μμ±ν νμ΄μ¬ νλ‘κ·Έλ¨μ μ°λ¦¬κ° μλ μ€ν νμΌλ‘(.exe)
λ³ν νλ κ² λν κ°λ₯ν©λλ€.
μ΄λ₯Όν λ©΄, PyInstaller, py2exe, py2app λ±μ ν΅ν΄μ μ€ν κ°λ₯ν λ°μ΄λλ¦¬λ‘ λ§λ€ μ μμ΅λλ€.
νλ‘μ¦ λ°μ΄λ리λ₯Ό λ§λ€ λμλ λ°μ΄νΈ μ½λμ, μ€ν νκ²½(PVM)
κ·Έλ¦¬κ³ μμ‘΄μ± λͺ¨λμ λ¨μΌ ν¨ν€μ§λ‘ λ§λλλ€.
κ·Έλ¦¬κ³ κ·Έ κ²°κ³Όλ¬Όμ μ€ν κ°λ₯ν νν (.exe λ±) κ° λ©λλ€
μ λ΄μ© μ€μμ, μΈν°ν리ν°λ μ΄λ€ μΈμ΄λ‘λ ꡬνν μ μλ€κ³ λ§μ λλ Έλλ°μ
μ’ λ μ½κ² λλ 보μλ©΄ μ΄λ μ΅λλ€.
νμ€ νμ΄μ¬ ꡬνμ νμ¬ CPython μ
λλ€. (Cython μ΄ μλλλΉ)
νμ΄μ¬ μ½λλ₯Ό μ½κ³ , λ°μ΄νΈ μ½λλ‘ λ§λ€κ³ μ€ννκ³ νλ νλμ
ANSI C μΈμ΄λ‘ ꡬνν νλ‘κ·Έλ¨ μ
λλ€.
κ·Έλ¦¬κ³ λ€μν μꡬ μ¬νκ³Ό λͺ©μ μ λ°λΌ μλμ κ°μ ꡬνμ΄ μ‘΄μ¬ ν©λλ€
κ°κ°μ μμΈν λ€λ£¨κΈ°μλ λ΄μ©μ΄ λ§μΌλ―λ‘ λμ΄κ°κ² λ€λ₯!
μλ κ·Έκ² κ·Έκ±° μλκ°? λΌκ³ μκ°νμλλ° μλμμ΅λλ€.
Cython μ "μΈμ΄" μμ΅λλ€... (λλ₯)
νμ΄μ¬μ 2λ
μ΄λ 곡λΆνλλ°, λ νλ μ λλ‘ μλκ² μλ€μ.
μ΄λ₯Ό ν
λ©΄ Cython μ νμ΄μ¬μ Superset κ³Ό κ°μ κ°λ
μ
λλ€.
Pythonμ λλΆλΆμ λ¬Έλ²μ μ§μνκ³ (μ‘°κΈ λ€λ¦
λλ€) Cython λ§μ λ¬Έλ²μ μ¬μ©νμ¬ μμ±νλ©΄
μ΄ μμ€ μ½λλ₯Ό C νμΌλ‘ μ»΄νμΌ ν©λλ€.
νμ΄μ¬ λ¬Έλ² κ·Έλλ‘λ₯Ό μμ±νμ¬ Cython μ»΄νμΌλ¬λ‘ μ€ννλ κ²λ λ¬Έμ κ° λμ§ μμ΅λλ€.
λ€λ§ Cython μ μ¬μ©νμλμ μμ μΈ C λ€μ΄ν°λΈ κ°μμ΄ μ μ©λμ§ μμ λΏμ
λλ€.
μ΄λ₯Ό ν λ©΄ 곡μ λ¬Έμμλ μ΄λ κ² μ€λͺ λμ΄ μμ£
(μ΄λ€ λμμ νλ μ½λμΈμ§ κ΅³μ΄ μ΄ν΄νμ§ μμΌμ λ λ©λλ€)
def f(x): return x ** 2 - x
def integrate_f(a, b, N):
s = 0
dx = (b - a)/N
for i in range(N):
s += f(a + i * dx)
return s * dx
μ΄λλ‘ Cython μΌλ‘ μ»΄νμΌ ν΄λ λ¬Έμ λ μμ§λ§,
μλμ κ°μ΄ νλ€λ©΄ μ±λ₯μμ κ°μ μ μ»μ μ μμ΅λλ€.
cdef double f(double x):
return x ** 2 - x
def integrate_f(double a, double b, int N):
cdef int i
cdef double s, x, dx
s = 0
dx = (b - a)/N
for i in range(N):
s += f(a + i * dx)
return s * dx
λ³ν건 cdef
λΌλ ν€μλκ° μ¬μ©λ κ²κ³Ό, ν¨μμΈμ λ° λ³μμ νμ
μ΄ μ§μ λμλ€λ μ μ
λλ€.
μ΄λ₯Ό C μΈμ΄λ‘ μ»΄νμΌ ν μ μκΈ° λλ¬Έμ μ±λ₯μμΌλ‘ μμ μ κ°μ§ μ μμ΅λλ€
Cython μ λν μ’ λ μμΈν μ€λͺ μ μ¬κΈ°λ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ
μ½λλ§ μ μ§λ©΄ λλ€λ μκ°μΌλ‘ μ΄μμλλ°, μ½λκ° μ΄λ»κ² μ€νλλμ§μ λν΄μλ
ν¬κ² κΆκΈν΄ νμ§ μμλ κ² κ°μ λ°μ±μ΄ λ©λλ€.
μ λμνλ νλ‘κ·Έλ¨λ μ€μνμ§λ§, μ΄ νλ‘κ·Έλ¨μ΄ μ΄λ»κ² μ λμνκ² λ κ²μΈκ°μ λν΄
νΈκΈ°μ¬μ κ°λ κ² λν ν λͺ
μ νλ‘κ·Έλλ¨Έλ‘μμ μ무λΌκ³ μκ°ν©λλ€.
μκ°μ λΆμ‘±νκ³ , 곡λΆν κ²μ λμ΄ μλ€λκ±Έ λ€μ ν λ² λλΌλ©° κΈμ λ§μΉ©λλ€ π
κΈ΄ κΈ μ½μ΄μ£Όμ
μ κ°μ¬ν©λλ€!
μμ κ°κ²°νκ² μ μ¨μ£Όμ ¨λ€