CPython, Cython, PyPy… Johdantoopas Pythonin eri variantteihin

joulu 19, 2021
admin

Jos harrastat Python-ohjelmointia, olet todennäköisesti kuullut sanat CPython, Cython, Jython, PyPy… Mitä ne kuitenkin tarkalleen ottaen ovat?

Tässä artikkelissa teemme pienen esittelyn joistakin näistä Python-muunnoksista, jotta voit ainakin ymmärtää, mihin niillä tarkalleen ottaen viitataan, jos näet ne jossain muussa yhteydessä.

CPython

CPython on alkuperäinen Python-toteutus, jota luultavasti käytät päivittäin ja jonka voit ladata virallisesti osoitteesta python.org. Sen nimi tulee siitä, että Python-koodi käännetään tavukoodiksi käyttäen C:tä.

Jython

Jython on vaihtoehtoinen toteutus, joka käyttää C:n sijasta Javaa tavukoodin saamiseksi. Tämä mahdollistaa tämän tavukoodin suorittamisen JVM:ssä, eli Java Virtual Machinessa, kuten muutkin kielet, kuten Kotlin, Scala tai itse Java.

Koska Jython on vain eräs toinen toteutus, syntaksi pysyy muuttumattomana: voit ottaa kaiken CPython-koodisi ja suorittaa sen Jythonissa ilman, että sinun tarvitsee muuttaa yhtään riviä.

Cython

Cython on kääntäjä, joka mahdollistaa C-laajennusten kirjoittamisen Pythonille, yleensä tavoitteena tehostaa sitä. Toisin kuin edellisissä esimerkeissä, ei ole erilainen toteutus: se käyttää CPythonia Python-koodin suorittamiseen. Sitä voidaan pitää Pythonin supersarjana, sillä se sisältää kaikki Pythonin toiminnallisuudet ja lisää niiden päälle ylimääräiset C-ominaisuudet.

Nämä laajennukset kirjoitetaan tietyllä syntaksilla, joka on hyvin samankaltainen kuin vastaavan C-koodin kirjoittamisessa. Katsotaanpa tämä esimerkki (Cythonin Wikipedia-sivustolta)

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

PyPy:n avulla meillä on toinen Python-toteutus kuten CPython tai Jython. Mielenkiintoista tässä toteutuksessa on se, että se on toteutettu… Pythonissa itsessään (kyllä, luultavasti tämä räjäytti tajuntasi, joten jatka lukemista ymmärtääksesi, mitä tarkoitamme tällä)

Py:n ydin on Just-In-Time (JIT) -kääntäjä, jota se käyttää kääntämään lähdekoodisi useimmin toistuvat osat koneen natiivikoodiksi (byte-koodin sijaan, kuten CPython tai Jython teki). Natiivikoodin ajaminen on tehokkaampaa kuin tavukoodin ajaminen, joten tämä voi johtaa suuriin nopeusparannuksiin, vaikka otetaan huomioon koodin kääntämiseen kuluva aika.

PyPy:n kotisivuilla on paljon yksityiskohtaista tietoa sen eduista (ja haitoista) sekä joitakin suorituskykyvinkkejä ja neuvoja siitä, mitkä tapaukset eivät ehkä sovellu sille parhaiten, joten suosittelen sinua tutustumaan siihen, jos olet kiinnostunut.

Yhteenveto

Tämän artikkelin jälkeen sinun pitäisi tuntea CPythonin, Jythonin, Cythonin ja PyPy:n käsitteet paremmin. On kuitenkin mahdollista, että olet kiinnostunut oppimaan niistä lisää, joten olen laatinut listan linkkejä, jotka voivat olla todella hyödyllisiä, jos haluat sukeltaa syvemmälle aiheeseen. Toivottavasti niistä on hyötyä!

Hyödyllisiä linkkejä

  • Python.org – Vaihtoehtoiset Python-toteutukset
  • Jythonin lopullinen opas
  • Cythonin viralliset verkkosivut
  • PyPy:n viralliset verkkosivut
  • Just-in-time-kompilointi
  • Artikkeli Toptal-sivustolla Python-toteutuksista

Vastaa

Sähköpostiosoitettasi ei julkaista.