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.
A Cython a Pyrex programozási nyelv utódja , de több funkcióval és optimalizálással rendelkezik. [3]
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]
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.cEzt 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 `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] .
Piton | |
---|---|
Közösség | |
Megvalósítások | |
Egyéb |
|