CPython

Üdvözlöm, Ön a CPython szó jelentését keresi. A DICTIOUS-ban nem csak a CPython 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 CPython szót egyes és többes számban mondani. Minden, amit a CPython szóról tudni kell, itt található. A CPython szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. ACPython é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)

  1. (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:

python myscript.py

A CPython az alábbi lépéseket hajtja végre:

  1. Parser → A .py forráskódot szintaxisfára (AST, Abstract Syntax Tree) alakítja.
  2. Compiler → Az AST-t Python bytecode-ra fordítja.
  3. 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.