Cython

Cython
Logo.
Dato for første version 2007
Paradigme Imperativ , proceduremæssig , struktureret programmering
Forfatter Greg Ewing
Udvikler Stefan Behnel, Robert Bradshaw, Lisandro Dalcín, Mark Florisson, Vitja Makarov, Dag Sverre Seljebotn
Sidste version 0.29,23 (14. april 2021)
Indtastning statisk , svag
Påvirket af Python
Påvirket ...
Implementeringer http://cython.org
Skrevet i Python
Licens Apache-licensversion 2.0 og Apache-licens
Internet side cython.org

Cython er et programmeringssprog og en kompilator, der gør det let at skrive kompilerede udvidelser til Python . Sprogssyntaxen ligner meget Python, men den understøtter også en delmængde af C / C ++ - sproget (variable erklæringer, funktionsopkald, ...).

Den første fordel ved Cython er, at den producerer meget mere kraftfuld kode. I programmer, der f.eks. Kræver manipulation af store arrays, kan gevinsten gå op til en faktor på 100. Derudover giver Cython dig mulighed for at skrive Python-grænseflader til eksterne biblioteker skrevet i C eller C ++.

Cython er tilgængelig for de fleste operativsystemer systemer .

Operation

Python-sproget understøtter fra begyndelsen skrivning af moduler skrevet på sprog C. Denne procedure er dog besværlig og delikat. Cython-compileren konverterer sine kildefiler på Cython-sprog ( .pyx- udvidelse ) til C- eller C ++ -sprog. For det andet kompileres disse C / C ++ filer som biblioteker, der er klar til brug sammen med Python.

Cython automatiserer blandt andet:

Cython-kompilatoren er skrevet i Python.

Historie

Cython blev født som et delprojekt af den gratis computeralgebra SageMath som en fork af Pyrex- sproget . SageMath er en af ​​softwaren, der bruger de fleste funktioner i Cython.

Programmer skrevet i Cython har filtypen .pyx. I sin enkleste form ser Cython-kildekode nøjagtigt ud som Python-kildekode. Imidlertid er variabler, i standard Python, dynamisk skrevet; at skrive er valgfri. Dette forbedrer ydeevnen og konverterer Cython-sløjfer til C-sløjfer, når det er muligt.

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

Noter og referencer

  1. Udgivelse 0.29.23  " ,14. april 2021(adgang til 11. maj 2021 )
  2. "  https://github.com/cython/cython/blob/master/LICENSE.txt  " (Adgang til 2. februar 2020 )
  3. Cython: C-Extensions for Python  " (adgang til 8. juli 2018 )
  4. (in) "  Arbejde med NumPy - Cython 0.28a0-dokumentation  "cython.readthedocs.io (adgang 27. november 2017 )

eksterne links