Cython

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. november 27-én felülvizsgált verziótól ; az ellenőrzések 7 szerkesztést igényelnek .
Cython
Nyelvóra nyílt forráskódú szoftverek , programozási nyelv megvalósítása [d] , Transpiler , programozási nyelv , ingyenes szoftver és Python könyvtár [d]
Megjelent 2007. július 28
Szerző Robert Bradshaw, Stefan Behnel és mások
Kiadás 0,29,32 ( 2022. július 29. ) [1]
Teszt verzió 3.0.0a11 ( 2022. július 31. ) [2]
Befolyásolt Pyrex
Engedély Apache licenc
Weboldal cython.org
OS Linux és Unix-szerű operációs rendszer

A Cython  egy programozási nyelv , amely megkönnyíti C / C++ kódmodulok írását a Python számára . A szabványos Python szintaxis mellett a következők támogatottak:

A Cython kódot C/C++ kóddá alakítjuk fordításhoz, és később a szabványos Python kiterjesztéseként vagy önálló alkalmazásként használható a beépített Cython futásidejű könyvtárral.

Történelem

A Cython a Pyrex programozási nyelv utódja , de több funkcióval és optimalizálással rendelkezik. [3]

Előnyök

A Cython szintaxisa nagyon közel áll a Pythonhoz.

A Python/C keverés "zökkenőmentes" megközelítésének különös előnye, hogy a meglévő Python-kód beállítható úgy, hogy csaknem olyan gyorsan futjon, mint néhány statikus típusdeklaráció és néhány adaptáció hozzáadása a kritikus ciklusokhoz, anélkül, hogy bonyolult interfészkódra lenne szükség. . A kódolási sebesség és a kód olvashatósága továbbra is hasonló a Pythonhoz.

A vezérlőstruktúrák (különösen a hurkok) csökkentett többletterhelése, az optimista optimalizálás és a (korlátozott) típuskövetkeztetés miatt a Cython által lefordított Python-kód általában gyorsabban fut, mint a CPython 2.6.x-ben, bár az abszolút javulás nagymértékben függ a kódtól. Típusdeklaráció esetén a numerikus számítások/tömbök tipikus gyorsulása 100-1000-szeres. [4] Összehasonlításképpen, a Psyco ( JIT fordító Pythonhoz) használatával a sebesség körülbelül 4-100-szoros. [5]

A Cython-t alacsony szubrutinhívási többletterhelésre optimalizálták, így a Pythonból a Cython-héjon keresztüli külső C/C++ kód hívása általában gyorsabb, mint a legtöbb más megoldás. [6] [7]

Példa

A következő példa kiszámítja az Ackermann-függvényt :

# Fájl 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 )) print ( "Ackermann:" ) print ( ackermann ( 0 , 3 )) print ( ackermann ( 1 , 4 ))

Futtatható fájl beszerzéséhez le kell fordítani C nyelvre (itt és lent - UNIX-szerű rendszer shell parancsai ) [8] :

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

Ezt követően lefordíthatja az eredményül kapott köztes fájlt [8] :

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

Alternatívák

A C-könyvtárak összekapcsolására a SWIG használható , amely egyszerre több programozási nyelvet is támogat, de általánossága miatt a Cython némileg veszít a könnyű használatból (a további kód szükséges mennyisége). További figyelemre méltó megfelelői a Parakeet ( a speciálisan megjelölt Python-kód LLVM- és JIT-összeállítását használja) [ 9 ] és a Nuitka (egy Python-C++ fordító, amely a PyPy -hez hasonlóan a fordítási időben Python-programot próbál begépelni) [10] [8] .

Lásd még

Jegyzetek

  1. 0.29.32 . Letöltve: 2022. augusztus 21. Az eredetiből archiválva : 2022. augusztus 18..
  2. 3.0.0a11 . Letöltve: 2022. augusztus 21. Az eredetiből archiválva : 2022. augusztus 21..
  3. Különbségek a Pyrex-szel Archiválva 2011-07-25 .
  4. gmane.comp.python.cython.devel - Mutató átadása Pythonból (lefelé irányuló kapcsolat) . Letöltve: 2010. november 30. Az eredetiből archiválva : 2017. február 14.. 
  5. Psyco - Bevezetés . Letöltve: 2010. november 30. Az eredetiből archiválva : 2019. november 29.
  6. wrapper benchmark több Python burkológenerátorhoz (a Cython kivételével) (a hivatkozás nem érhető el) . Letöltve: 2010. november 30. Az eredetiből archiválva : 2015. április 4.. 
  7. Burkolási referenciaértékek a Cython, Boost.Python és PyBindGen számára . Letöltve: 2010. november 30. Az eredetiből archiválva : 2016. március 3..
  8. 1 2 3 Herron, 2014 .
  9. Parakeet: futásidejű fordító a numerikus Pythonhoz (lefelé irányuló kapcsolat) . Hozzáférés dátuma: 2014. november 27. Az eredetiből archiválva : 2014. november 12. 
  10. Nuitka Home . Letöltve: 2014. november 27. Az eredetiből archiválva : 2020. május 30.

Linkek

Források

  • Stefan Behnel, Robert Bradshaw, Craig Citro, Lisandro Dalcin, Dag Sverre Seljebotn, Kurt Smith. Cython: Mindkét világ legjobbja // Számítástechnika a tudományban és a mérnöki tudományokban. - 2011. - 13.2 sz . - P. 31-39. - doi : 10.1109/MCSE.2010.118 .
  • Philip Herron. Cython: Python natív kódra // Linux formátum. - 2014. - 12. szám / LXF191 . - P. 84-87. — ISSN 1470-4234 .
  • Philip Herron. Cython programozás tanulása. – Csomag, 2013. szeptember. — 110 p. — ISBN 9781783280797 .