szó jelentését keresi. A DICTIOUS-ban nem csak a
szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a
szót egyes és többes számban mondani. Minden, amit a
szóról tudni kell, itt található. A
szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. A
és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.
Főnév
CPython (tsz. CPythons)
- (informatika) A CPython a Python programozási nyelv hivatalos, referenciaimplementációja. Az elnevezés a C nyelvre utal, mivel a CPython maga C-ben íródott, és a Python nyelvspecifikációjának szabványos megvalósítását képviseli.
Ha a legtöbben azt mondják: “Python interpreter”, valójában általában CPython-ra gondolnak.
Mi az a CPython?
✅ Interpreter + compiler:
- A CPython egyszerre:
- Interpreter → Python bytecode-ot hajt végre.
- Compiler → a
.py
forráskódot Python bytecode-ra fordítja (de nem gépi kódra).
✅ Referenciaimplementáció:
- A Python nyelv szabványos viselkedését a CPython határozza meg.
- Más implementációk (pl. PyPy, Jython, IronPython) is a CPython viselkedését próbálják követni.
✅ Legelterjedtebb Python implementáció:
- A Python ökoszisztéma 95%-a CPython köré épül.
- Minden hivatalos Python kiadás (pl. 3.12, 3.13) CPython release.
Hogyan működik a CPython?
1️⃣ Forráskód → Bytecode
Amikor egy .py
fájlt futtatunk:
A CPython az alábbi lépéseket hajtja végre:
- Parser → A
.py
forráskódot szintaxisfára (AST, Abstract Syntax Tree) alakítja.
- Compiler → Az AST-t Python bytecode-ra fordítja.
- Interpreter → A bytecode-ot bytecode interpreter hajtja végre.
2️⃣ Python bytecode
- A Python bytecode platformfüggetlen köztes forma.
.pyc
fájlokba kerül (__pycache__
mappában).
- A CPython saját stack-based virtual machine-t használ a bytecode végrehajtására.
Példa bytecode utasítások:
LOAD_CONST
LOAD_FAST
CALL_FUNCTION
RETURN_VALUE
3️⃣ Nem gépi kód
- A CPython nem fordítja a Python kódot natív gépi kódra (ellentétben pl. a C++ fordítókkal).
- A bytecode-ot interpreter futtatja → ezért a CPython futtatása általában lassabb, mint pl. PyPy JIT esetén.
CPython architektúrája
A CPython fő komponensei:
✅ Parser → .py
→ AST ✅ Compiler → AST → Bytecode ✅ Bytecode Interpreter → Stack-alapú VM (eval loop) ✅ Garbage Collector → Referenciaszámlálás + ciklikus GC ✅ Standard Library → Beépített Python könyvtárak (pl. math
, os
, json
stb.) ✅ C API → C extensionök írására szolgáló API (pl. NumPy belső C magja).
CPython teljesítménye
A CPython célja:
- Stabilitás
- Kompatibilitás
- Olvashatóság
- Könnyű C integráció
→ Nem feltétlenül a nyers teljesítmény maximalizálása.
✅ Előny:
- Szinte minden Python kód tökéletesen fut CPython alatt.
- Nagy ökoszisztéma (pip csomagok milliói).
❌ Hátrány:
- Interpreter alapú → lassabb, mint a JIT-tel rendelkező rendszerek (pl. PyPy).
- Dinamikus típusok → futás közbeni típusellenőrzés → overhead.
Miért C-ben íródott?
- C nyelv kiváló teljesítményű és nagyon hordozható.
- A Python nyelv specifikációja C nyelvű megvalósításként alakult ki.
- C-ből könnyű C extensionöket írni, így a CPython könnyen bővíthető.
Példa: a NumPy könyvtár sok C kódot tartalmaz, amelyet CPython alatt C API-n keresztül érnek el.
CPython és C API
✅ A CPython egyik fő előnye a C API:
- Lehetővé teszi, hogy Pythonból natív C kódot hívjunk meg.
- Nagy teljesítményű kiterjesztések írhatók így.
- Ilyen modulok: NumPy, SciPy, TensorFlow C magjai.
Példa C extension-re:
#include <Python.h>
static PyObject* myfunc(PyObject* self, PyObject* args) {
printf("Hello from C!\n");
Py_RETURN_NONE;
}
CPython verziók
A CPython legfrissebb kiadásai:
- Python 3.12 → jelentős teljesítményjavítások (Faster CPython project).
- Python 3.11 → akár 30–60%-kal gyorsabb, mint Python 3.10.
- Python 3.10 → pattern matching bevezetése.
- Python 3.x sorozat → már több mint 10 éve a fő Python vonal.
A Python 2.7 verzió 2020-ban kivezetésre került, de a CPython sokáig támogatta.
CPython vs alternatív implementációk
Implementáció
|
Jellemzők
|
CPython
|
Hivatalos, C-ben írt, interpreter
|
PyPy
|
JIT fordítóval rendelkező, gyors
|
Jython
|
JVM-re fordít, Java interop
|
IronPython
|
.NET-re fordít, C# interop
|
MicroPython
|
Beágyazott rendszerekhez
|
Miért CPython a domináns?
- A Python ökoszisztéma nagy része a CPython C API köré épült.
- C extensionök csak CPython kompatibilisek.
- Minden hivatalos teszt, dokumentáció a CPython referenciaimplementációhoz igazodik.
CPython és GIL
A CPython egyik sokat vitatott eleme: Global Interpreter Lock (GIL).
- A GIL miatt egyszerre csak egy szál hajthatja végre Python bytecode-ot.
- Előnye: egyszerűbb memória- és referenciakezelés.
- Hátránya: nem skálázódik jól több CPU magra → pl. párhuzamos numerikus számításoknál hátrány.
Megoldások:
✅ multiprocessing modul → több processz párhuzamos futtatása. ✅ Alternatív implementációk (pl. PyPy GIL nélküli kísérletek). ✅ Python közösségben folyik a GIL eltávolításáról szóló vita (3.13+, 3.14+ verziókban kísérleti GIL-free build).
CPython ökoszisztéma
✅ pip csomagkezelő → CPython hivatalos csomagkezelője. ✅ PyPI → Python Package Index → CPython fő közösségi csomagtára.
Több millió Python csomag → szinte mind CPython kompatibilis.
CPython buildelése
A CPython forrása nyílt forráskódú → letölthető:
git clone https://github.com/python/cpython.git
Buildelés Linuxon:
./configure
make
make install
Így saját CPython buildet is készíthetünk.
Összegzés
✅ A CPython a Python nyelv hivatalos, C-ben írt interpreter implementációja. ✅ A Python nyelv standard viselkedését a CPython referenciaimplementáció határozza meg. ✅ A CPython bytecode interpretert használ, nem JIT fordítót. ✅ C API támogatás → C extension modulok. ✅ Globális Interpreter Lock (GIL) jelen van → egyszerre csak 1 interpreter szál. ✅ Python ökoszisztéma túlnyomó része CPython köré épül.