CPython, Cython, PyPy… Bevezető útmutató a Python különböző változataihoz

dec 19, 2021
admin

Ha Python programozással foglalkozik, jó eséllyel hallotta már a CPython, Cython, Jython, PyPy… szavakat. De mik is ezek pontosan?

Ezzel a cikkel egy kis bevezetést teszünk néhány ilyen Python-változatba, hogy legalább megértse, mire utalnak pontosan, ha más kontextusban találkozik velük.

CPython

A CPython az eredeti Python implementáció, amit valószínűleg naponta használ, és amit hivatalosan a python.org-ról tölthet le. A neve onnan ered, hogy a Python kódot C segítségével fordítják bytecode-ba.

Jython

A Jython egy alternatív implementáció, amely C helyett Java-t használ a bytecode előállításához. Ez lehetővé teszi, hogy ez a bytecode a JVM-ben, a Java Virtual Machine-ben fusson, mint más nyelvek, például a Kotlin, a Scala vagy maga a Java.

Mivel a Jython csak egy másik implementáció, a szintaxis változatlan marad: az összes CPython kódodat foghatod és futtathatod a Jythonban anélkül, hogy egyetlen sort is meg kellene változtatnod.

Cython

A Cython egy fordító, amely lehetővé teszi, hogy C kiterjesztéseket írjunk Pythonhoz, általában azzal a céllal, hogy hatékonyabbá tegyük azt. Az előző példáktól eltérően nem más implementáció: a CPython-t használja a Python kód futtatására. A Python szuperkészletének tekinthető, mivel tartalmazza annak minden funkcionalitását, és a C extra képességekkel egészíti ki.

Ezek a kiterjesztések egy speciális szintaxisban íródnak, ami nagyban hasonlít ahhoz, amit a megfelelő C kód írásához használunk. Lássuk ezt a példát (a Cython Wikipedia oldaláról)

def sum_up_to_n(n): a = 0 for i in range(n): a += i return acpdef sum_up_to_n(int n): cdef int a = 0, i for i in range(n): a += i return a

PyPy

A PyPy-vel egy másik Python implementációt kapunk, mint a CPython vagy a Jython. Ennek az implementációnak az az érdekessége, hogy a… maga a Python (igen, valószínűleg ez kiverte a biztosítékot, úgyhogy olvass tovább, hogy megértsd, mit értünk ez alatt)

A PyPy lényege egy Just-In-Time (JIT) fordító, amelyet arra használ, hogy a forráskód legismétlődőbb részeit a gép natív kódjába fordítsa (bytecode helyett, mint a CPython vagy a Jython tette). A natív kód futtatása hatékonyabb, mint a bytecode futtatása, így ez még a kód lefordítására fordított időt figyelembe véve is nagy sebességnövekedést eredményezhet.

A PyPyPy weboldalán rengeteg részletes információ található az előnyeiről (és hátrányairól), valamint néhány teljesítménytipp és tanács arra vonatkozóan, hogy mely esetekben nem biztos, hogy a legmegfelelőbb, ezért javaslom, hogy ha érdekel, nézz utána.

Összegzés

A cikk után jobban meg kell ismerned a CPython, Jython, Cython és PyPy fogalmait. Azonban jó esély van arra, hogy többet szeretnél megtudni róluk, ezért összeállítottam egy listát azokról a linkekről, amelyek igazán hasznosak lehetnek, ha szeretnél mélyebben elmerülni a témában. Remélem, hasznosnak találod őket!

Hasznos linkek

  • Python.org – Alternatív Python implementációk
  • A Jython végleges útmutatója
  • Cython hivatalos honlapja
  • PyPy hivatalos honlapja
  • Just-in-time compilation
  • Article on Toptal about Python implementations

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.