Cython

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 27.11.2021 tarkistetusta versiosta . tarkastukset vaativat 7 muokkausta .
Cython
Kieliluokka avoimen lähdekoodin ohjelmistot , ohjelmointikielen toteutus [d] , Transpiler , ohjelmointikieli , ilmainen ohjelmisto ja Python-kirjasto [d]
Esiintyi 28. heinäkuuta 2007
Tekijä Robert Bradshaw, Stefan Behnel ja paljon muuta
Vapauta 0,29,32 ( 29. heinäkuuta 2022 ) [1]
Testiversio 3.0.0a11 ( 31. heinäkuuta 2022 ) [2]
Vaikutettu Pyrex
Lisenssi Apache-lisenssi
Verkkosivusto cython.org
OS Linux- ja Unix-tyyppinen käyttöjärjestelmä

Cython  on ohjelmointikieli , jonka avulla Pythonille on helppo kirjoittaa C / C++- koodimoduuleja . Pythonin vakiosyntaksin lisäksi tuetaan seuraavia:

Cython-koodi muunnetaan C/C++-koodiksi käännöstä varten, ja sitä voidaan myöhemmin käyttää vakio Pythonin laajennuksena tai erillisenä sovelluksena, jossa on sisäänrakennettu Cython-ajonaikainen kirjasto.

Historia

Cython on Pyrex-ohjelmointikielen seuraaja , mutta siinä on enemmän ominaisuuksia ja optimointeja. [3]

Edut

Cythonilla on hyvin läheinen syntaksi Pythonille.

Erityinen etu tästä "saumattomasta" lähestymistavasta Python/C-sekoituksessa on, että olemassa oleva Python-koodi voidaan määrittää toimimaan melkein yhtä nopeasti kuin vain muutaman staattisen tyyppiilmoituksen lisääminen ja joitain mukautuksia kriittisiin silmukoihin ilman monimutkaista käyttöliittymäkoodia. . Koodausnopeus ja koodin luettavuus ovat verrattavissa Pythoniin.

Ohjausrakenteiden (etenkin silmukoiden) vähentyneiden lisäkustannusten, optimististen optimointien ja (rajoitetun) tyyppipäätelmän vuoksi Cythonin käännetty Python-koodi toimii yleensä nopeammin kuin CPython 2.6.x:ssä, vaikka absoluuttinen parannus riippuu suuresti koodista. Tyyppimäärityksiä käytettäessä numeeristen laskutoimitusten/taulukoiden tyypilliset nopeudet ovat noin 100-1000 kertaa. [4] Vertailun vuoksi tyypillinen nopeuden lisäys Psycoa ( JIT -kääntäjä Pythonille) käytettäessä on noin 4-100-kertainen. [5]

Cython on optimoitu alhaisiin alirutiinien kutsuihin, joten ulkoisen C/C++-koodin kutsuminen Pythonista Cython-kuoren kautta on yleensä nopeampaa kuin useimmat muut ratkaisut. [6] [7]

Esimerkki

Seuraava esimerkki laskee Ackermann-funktion :

# Tiedosto ackermann.pyx cdef ackermann ( int m , int n ): if m == 0 : return n + 1 elif n == 0 : return ackermann ( m - 1 , 1 ) else : return ackermann ( m - 1 , ackermann ) ( m , n - 1 )) tulosta ( "Ackermann:" ) tulosta ( ackermann ( 0 , 3 )) tulosta ( ackermann ( 1 , 4 ))

Suoritettavan tiedoston saamiseksi se on käännettävä C:ksi (tässä ja alla - UNIX-tyyppisen järjestelmän komentotulkkikomennot ) [8] :

cython --embed ackermann.pyx -o ackermann.c

Tämän jälkeen voit kääntää tuloksena olevan välitiedoston [8] :

gcc -g -O2 -o ackermann ackermann.c ` python-config --includes --ldflags `

Vaihtoehdot

C-kirjastojen sitomiseen voidaan käyttää SWIGiä , joka tukee useita ohjelmointikieliä kerralla, mutta yleisyytensä vuoksi Cython menettää jonkin verran helppokäyttöisyyttä (tarvittavan lisäkoodin määrä). Muita merkittäviä vastineita ovat Parakeet (käyttää LLVM- ja JIT-kokoelmaa erityisesti merkityistä Python-koodista) [9] ja Nuitka (Python-C++-kääntäjä, joka, kuten PyPy , yrittää kirjoittaa Python-ohjelman käännöshetkellä) [10] [8] .

Katso myös

Muistiinpanot

  1. 0.29.32 . Haettu 21. elokuuta 2022. Arkistoitu alkuperäisestä 18. elokuuta 2022.
  2. 3.0.0a11 . Haettu 21. elokuuta 2022. Arkistoitu alkuperäisestä 21. elokuuta 2022.
  3. Erot Pyrexin kanssa Arkistoitu 2011-07-25 .
  4. gmane.comp.python.cython.devel - Osoittimen välittäminen Pythonista (downlink) . Haettu 30. marraskuuta 2010. Arkistoitu alkuperäisestä 14. helmikuuta 2017. 
  5. Psyco - Johdanto . Haettu 30. marraskuuta 2010. Arkistoitu alkuperäisestä 29. marraskuuta 2019.
  6. kääreen vertailuarvot useille Python-kääregeneraattoreille (paitsi Cython) (linkki ei saatavilla) . Haettu 30. marraskuuta 2010. Arkistoitu alkuperäisestä 4. huhtikuuta 2015. 
  7. Cythonin, Boost.Pythonin ja PyBindGenin kääreen vertailuarvot . Haettu 30. marraskuuta 2010. Arkistoitu alkuperäisestä 3. maaliskuuta 2016.
  8. 1 2 3 Herron, 2014 .
  9. Parakeet: ajonaikainen kääntäjä numeeriselle Pythonille (downlink) . Käyttöpäivä: 27. marraskuuta 2014. Arkistoitu alkuperäisestä 12. marraskuuta 2014. 
  10. Nuitka Etusivu . Haettu 27. marraskuuta 2014. Arkistoitu alkuperäisestä 30. toukokuuta 2020.

Linkit

Lähteet

  • Stefan Behnel, Robert Bradshaw, Craig Citro, Lisandro Dalcin, Dag Sverre Seljebotn, Kurt Smith. Cython: Molempien maailmojen parhaat puolet // Tietojenkäsittely tieteessä ja tekniikassa. - 2011. - Nro 13.2 . - s. 31-39. - doi : 10.1109/MCSE.2010.118 .
  • Philip Herron. Cython: Python alkuperäiseen koodiin // Linux-muoto. - 2014. - Nro 12 / LXF191 . - s. 84-87. — ISSN 1470-4234 .
  • Philip Herron. Cython-ohjelmoinnin oppiminen. – Paketti, syyskuu 2013. - 110 p. — ISBN 9781783280797 .