์ต์ JIT ์ปดํ์ผ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ Python ์ธ์ด์ ๊ณ ์ฑ๋ฅ ๊ตฌํ์ ์ ๊ณตํ๋ Pyston ํ๋ก์ ํธ์ ๊ฐ๋ฐ์๋ CPython์ฉ JIT ์ปดํ์ผ๋ฌ ๊ตฌํ์ ํตํด Pyston-lite ํ์ฅ์ ์ ๋ณด์์ต๋๋ค. Pyston์ CPython ์ฝ๋๋ฒ ์ด์ค์ ๋ถ๊ธฐ์ด๋ฉฐ ๋ณ๋๋ก ๊ฐ๋ฐ๋๋ ๋ฐ๋ฉด, Pyston-lite๋ ํ์ค Python ์ธํฐํ๋ฆฌํฐ(CPython)์ ์ฐ๊ฒฐํ๋๋ก ์ค๊ณ๋ ๋ฒ์ฉ ํ์ฅ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค.
Pyston-lite๋ฅผ ์ฌ์ฉํ๋ฉด PIP ๋๋ Conda ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ํ์ฅ์ ์ค์นํ์ฌ ์ธํฐํ๋ฆฌํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ๊ธฐ๋ณธ Pyston ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Pyston-lite๋ ์ด๋ฏธ PyPI ๋ฐ Conda ์ ์ฅ์์ ํธ์คํ ๋์ด ์์ผ๋ฉฐ ์ด๋ฅผ ์ค์นํ๋ ค๋ฉด "pip install pyston_lite_autoload" ๋๋ "conda install pyston_lite_autoload -c pyston" ๋ช ๋ น์ ์คํํ๋ฉด ๋ฉ๋๋ค. pyston_lite(์ง์ JIT) ๋ฐ pyston_lite_autoload(Python ํ๋ก์ธ์ค๊ฐ ์์๋ ๋ ์๋ JIT ๋์ฒด ์ํ)์ ๋ ๊ฐ์ง ํจํค์ง๊ฐ ์ ๊ณต๋ฉ๋๋ค. pyston_lite.enable() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ๋ก๋ ๋ชจ๋์ ์ค์นํ์ง ์๊ณ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ JIT ํฌํจ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ ์ดํ ์๋ ์์ต๋๋ค.
Pyston-lite๋ Pyston์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ์ต์ ํ๋ฅผ ๋ค๋ฃจ์ง๋ ์์ง๋ง ์ผ๋ฐ Python 10์ ๋นํด ์ฝ 25-3.8% ์ ๋ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์์ผ๋ก๋ Pyston์ ์๋ ๋๋ถ๋ถ์ ์ต์ ํ๋ฅผ Pyston-lite๋ก ์ด์ ํ๊ณ ์ง์๋๋ CPython ๋ฒ์ ์ ํ์ฅํ ๊ณํ์ ๋๋ค(์ฒซ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค๋ Python 3.8๋ง ์ง์ํจ). ๋ ๋ง์ ๊ธ๋ก๋ฒ ๊ณํ์๋ JIT์ฉ ์ API๋ฅผ ๊ตฌํํ๊ธฐ ์ํ CPython ํ๊ณผ์ ํ๋ ฅ์ด ํฌํจ๋์ด Python ์์ ์ ๋ณด๋ค ์๋ฒฝํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค. Python 3.12 ๋ถ๊ธฐ์ ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ํฌํจ์ํค๋ ๊ฒ์ด ๋ ผ์๋๊ณ ์์ต๋๋ค. ์ด์์ ์ผ๋ก๋ Pyston์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํ์ฅ์ผ๋ก ์ด๋ํ ๊ฐ๋ฅ์ฑ์ด ๊ณ ๋ ค๋๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์์ฒด CPython ํฌํฌ๋ฅผ ์ ์ง ๊ด๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค.
Pyston-lite ์ธ์๋ ์ด ํ๋ก์ ํธ๋ ์๋ก์ด ์ต์ ํ๋ฅผ ์ ๊ณตํ๋ ์์ ํ Pyston 2.3.4 ํจํค์ง์ ๋ํ ์ ๋ฐ์ดํธ๋ ์ถ์ํ์ต๋๋ค. pyperformance ํ ์คํธ์์ ๋ฒ์ 2.3.4๋ ๋ฆด๋ฆฌ์ค 2.3.3๋ณด๋ค ์ฝ 6% ๋น ๋ฆ ๋๋ค. CPython์ ๋นํด ์ ๋ฐ์ ์ธ ์ฑ๋ฅ ํฅ์์ 66%๋ก ์ถ์ ๋ฉ๋๋ค.
๋ํ, ๋ฉ์ธ ํ๋ก์ ํธ์ CPython 3.11 ๊ฐ๋ฐ ์ฃผ๊ธฐ ๋ด์์ ๊ฐ๋ฐ๋ ์ต์ ํ๋ฅผ ํ์ธํ ์ ์์ผ๋ฉฐ, ์ผ๋ถ ํ ์คํธ์์๋ ์ฑ๋ฅ์ 25% ํฅ์์ํฌ ์ ์์์ต๋๋ค. ์๋ฅผ ๋ค์ด, CPython 3.11์์๋ ๊ธฐ๋ณธ ๋ชจ๋์ ๋ฐ์ดํธ์ฝ๋ ์ํ ์บ์ฑ ํจ์จ์ฑ์ด ํฅ์๋์ด ์คํฌ๋ฆฝํธ ์คํ ์๋๊ฐ 10-15% ํฅ์๋์์ต๋๋ค. ํจ์ ํธ์ถ์ด ํฌ๊ฒ ๊ฐ์ํ๋์์ผ๋ฉฐ ํ์ค ์์ ์ ๋ํ ํนํ๋ ๋น ๋ฅธ ํด์๊ธฐ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. Cinder ๋ฐ HotPy ํ๋ก์ ํธ์์ ์ค๋นํ ์ผ๋ถ ์ต์ ํ๋ฅผ ์ด์ํ๋ ์์ ๋ ์งํ ์ค์ ๋๋ค.
๋ํ nogil ํ๋ก์ ํธ ๋ด์์๋ ์ ์ญ ํด์๊ธฐ ์ ๊ธ(GIL, Global Interpreter Lock) ์์ด CPython์ ๊ตฌ์ถํ๊ธฐ ์ํ ์คํ ๋ชจ๋์ ๋ํ ์์
์ด ์งํ ์ค์
๋๋ค. ์ด๋ ์๋ก ๋ค๋ฅธ ์ค๋ ๋์์ ๊ณต์ ๊ฐ์ฒด์ ๋ํ ๋ณ๋ ฌ ์ก์ธ์ค๋ฅผ ํ์ฉํ์ง ์์ ๋ค์ค ์์
์ ๋ณ๋ ฌํ๋ฅผ ๋ฐฉ์งํฉ๋๋ค. -ํต์ฌ ์์คํ
. GIL ๋ฌธ์ ์ ๋ํ ๋ ๋ค๋ฅธ ํด๊ฒฐ์ฑ
์ผ๋ก ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ๊ฐ ์ธํฐํ๋ฆฌํฐ์ ๋ณ๋์ GIL์ ๋ฐ์ธ๋ฉํ๋ ๊ธฐ๋ฅ์ด ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค(์ฌ๋ฌ ์ธํฐํ๋ฆฌํฐ๊ฐ ํ๋์ ํ๋ก์ธ์ค์์ ์คํ๋ ์ ์์ง๋ง ๋ณ๋ ฌ ์คํ์ ํจ์จ์ฑ์ GIL์ ๋ฐ๋ผ ๋ค๋ฆ).
์ถ์ฒ : opennet.ru