program execution |
---|
general concepts |
types of code |
compilation strategies |
Notable runtimes |
|
Notable compilers & toolchains |
|
PyPy (tsz. PyPies)
Míg a CPython interpreterként működik és minden Python utasítást közvetlenül hajt végre, a PyPy egy Just-in-Time (JIT) fordítót tartalmaz, amely a Python kódot futás közben optimalizált gépi kóddá fordítja.
👉 Eredmény: a legtöbb Python program 4–10-szer gyorsabban fut PyPy alatt, mint CPython alatt.
A PyPy projekt a következő fő elemekből áll:
✅ RPython: → Egy statikusan típusos, Python-szerű nyelv, amelyben maga a PyPy implementációja készül.
✅ JIT fordító: → A Python kódot futás közben gépi kóddá fordítja.
✅ Garbage collector: → Fejlett automatikus memória- és szemétgyűjtő rendszer.
✅ Virtuális gép (VM): → A Python kódot futtató környezetet biztosít.
✅ Python API kompatibilitás: → A PyPy célja a CPython API lehető legjobb lefedése, hogy a Python csomagok minél nagyobb részével kompatibilis legyen.
✅ Nagy sebesség → Különösen numerikus, CPU-intenzív Python kódoknál sokszoros gyorsulás érhető el.
✅ Nem kell kódot módosítani → A legtöbb meglévő Python program változtatás nélkül fut PyPy alatt.
✅ Automatikus optimalizálás → A JIT fordító automatikusan a leggyakoribb kódrészeket optimalizálja.
✅ Aktív fejlesztés, nyílt forráskód → Ingyenes, közösségi projekt.
A CPython interpreter folyamata:
Python forráskód (.py) → CPython → Bytecode → Interpreter → CPU
A PyPy folyamata:
Python forráskód (.py) → PyPy → Bytecode → JIT fordító → Gépi kód → CPU
Különbség: A PyPy JIT fordítóval futás közben fordítja le a gyakran használt kódrészeket optimalizált gépi kóddá → ezek sokkal gyorsabban hajthatók végre, mint a hagyományos interpretáció.
A JIT (Just-in-Time) fordítás során:
👉 Eredmény:
Szempont | CPython | PyPy |
---|---|---|
Futtatás típusa | Interpreter | JIT fordító + interpreter |
Futtatási sebesség | Lassabb | Gyorsabb (4-10x) |
Memóriahasználat | Általában kevesebb | Kicsit magasabb |
Kompatibilitás | 100% Python | Nagyon jó (néhány C extension problémás lehet) |
Fejlesztés típusa | Stabil, ipari szabvány | Fejlesztés alatt, aktív |
C modulok támogatása | Natív (C API) | Részben kompatibilis, cffi ajánlott |
✅ Numerikus kódok (szimulációk, gépi tanulás saját kódbázissal) ✅ Játékok, grafikai alkalmazások ✅ Adatfeldolgozó rendszerek ✅ CPU-intenzív algoritmusok ✅ Általános gyorsítás Python kód esetén
Nem ideális:
❌ Erősen C extension-ök használatakor (pl. bizonyos Cython, C-based NumPy modulok régi verziói). ❌ Ha fixen kell a teljes CPython C API kompatibilitás (pl. bonyolult integrációs rendszerekben).
1️⃣ Linux / macOS:
sudo apt install pypy3
# vagy letöltés a hivatalos oldalról: https://www.pypy.org
2️⃣ Windows:
→ Hivatalos installer letöltése: https://www.pypy.org/download.html
pypy3 myscript.py
PyPy saját pip
verziót is tartalmaz:
pypy3 -m ensurepip
pypy3 -m pip install numpy pandas
Feladat típusa | CPython futási idő | PyPy futási idő |
---|---|---|
Fibonacci rekurzívan | 5.2 mp | 0.4 mp |
Prime számok keresése | 8.1 mp | 1.0 mp |
Mandelbrot fractal | 12.3 mp | 2.1 mp |
Természetesen az eredmény függ:
✅ Jól támogatott:
❌ Problémás lehet:
Hosszú távú cél:
✅ A PyPy egy gyors, alternatív Python implementáció. ✅ JIT fordítóval jelentős sebességnövekedést nyújt. ✅ A legtöbb meglévő Python kód változtatás nélkül fut. ✅ Nagy CPU-intenzív programokhoz ideális. ✅ Csomagkompatibilitás fokozatosan javul.
Nem minden helyzetben ideális (pl. C extension heavy kód), de ha nagyobb sebesség kell, a PyPy az egyik legjobb választás.