Cython

Cython
Logo.
Dato for første versjon 2007
Paradigme Imperativ , prosessuell , strukturert programmering
Forfatter Greg Ewing
Utvikler Stefan Behnel, Robert Bradshaw, Lisandro Dalcín, Mark Florisson, Vitja Makarov, Dag Sverre Seljebotn
Siste versjon 0.29.23 (14. april 2021)
Skrive statisk , svak
Påvirket av Python
Påvirket ...
Implementeringer http://cython.org
Skrevet i Python
Tillatelse Apache lisens versjon 2.0 og Apache lisens
Nettsted cython.org

Cython er et programmeringsspråk og kompilator som gjør det enkelt å skrive kompilert utvidelser for Python . Syntaksen til språket er veldig lik Python, men det støtter også en delmengde av C / C ++ -språket (variable erklæringer, funksjonsanrop, ...).

Den første fordelen med Cython er at den produserer mye kraftigere kode. I programmer som for eksempel krever manipulering av store matriser, kan forsterkningen gå opp til en faktor på 100. I tillegg lar Cython deg skrive Python-grensesnitt til eksterne biblioteker skrevet i C eller C ++.

Cython er tilgjengelig for de fleste driftssystemer .

Operasjon

Python-språket fra sin opprinnelse støtter skriving av moduler skrevet på språk C. Imidlertid er denne prosedyren arbeidskrevende og delikat. Cython-kompilatoren konverterer kildefilene på Cython-språk ( .pyx- utvidelse ) til C- eller C ++ -språk. For det andre er disse C / C ++ -filene samlet som biblioteker som er klare til å brukes med Python.

Cython automatiserer blant annet:

Selve Cython-kompilatoren er skrevet i Python.

Historie

Cython ble født som et delprosjekt av den gratis datamaskinalgebra-programvaren SageMath som en gaffel av Pyrex- språket . SageMath er en av programvarene som bruker de fleste funksjonene i Cython.

Programmer skrevet i Cython har .pyx-utvidelsen. I sin enkleste form ser Cython kildekode ut akkurat som Python kildekode. Imidlertid, mens variabler, i standard Python, er skrevet dynamisk; å skrive er valgfritt. Dette forbedrer ytelsen og konverterer Cython-løkker til C-løkker når det er mulig.

For eksempel :

def primes(int kmax): # L'argument sera converti en nombre ou provoquera un TypeError. cdef int n, k, i # Ces variables sont déclarées avec des types en C. cdef int p[1000] # un autre typage C result = [] # un typage Python if kmax > 1000: kmax = 1000 k = 0 n = 2 while k < kmax: i = 0 while i < k and n % p[i] != 0: i = i + 1 if i == k: p[k] = n k = k + 1 result.append(n) n = n + 1 return result

Merknader og referanser

  1. Utgivelse 0.29.23  " ,14. april 2021(åpnet 11. mai 2021 )
  2. "  https://github.com/cython/cython/blob/master/LICENSE.txt  " (Tilgang 2. februar 2020 )
  3. Cython: C-Extensions for Python  " (åpnet 8. juli 2018 )
  4. (in) "  Working with NumPy - Cython 0.28a0 documentation  "cython.readthedocs.io (åpnet 27. november 2017 )

Eksterne linker