Cython

De Viquipèdia
Salta a la navegació Salta a la cerca
No s'ha de confondre amb CPython.
Infotaula de llenguatge de programacióCython
Tipusllenguatge de programació
Data de creació28 juliol 2007 modifica
DesenvolupadorRobert Bradshaw, Stefan Behnel, et al.
EpònimPython i C modifica
Darrera versió estable0.29.15 () modifica
Dialecte dePython modifica
Llenguatge de programacióPython modifica
Influenciat perPython modifica
Codi fontCodi font modifica
LlicènciaApache License
Pàgina webcython.org

Cython és un llenguatge de programació per simplificar l'escriptura de mòduls d'extensió per Python en C i C++. La sintaxi de Cython és la mateixa de Python però amb alguns afegits:

  • Es poden cridar funcions en C, o funcionis/mètodes de C++, directament des del codi en Cython.
  • És possible usar tipus estàtics en les variables (sencers, flotants, o qualsevol tipus de dada).

Cython compila a codi en C o C++ des de Python, i el resultat pot ser usat des de Python com un "Mòdul d'extensió", o com una aplicació encastada en l'intèrpret CPython.

Història[modifica]

Cython és un projecte derivat de Pyrex, però implementa més funcionalitats i optimitzacions que aquest.[1]

Avantatges[modifica]

L'avantatge essencial d'aquest enfocament, és que al barrejar perfectament codi Python/C (és a dir, C usant <python.h>) és que el codi Python existent es pot ajustar a gairebé la velocitat de C amb només afegir uns quants tipus estàtics a les declaracions i fent algunes adaptacions en els bucles crítics -sense necessitat d'una interfície complicada o molt invasiva del codi. La velocitat de codificació i la llegibilitat del codi segueix sent comparable a la del codi Python.

A causa de reducció del consum general en les estructures de control (especialment els bucles), les optimitzacions optimistes i la inferència de tipus, el codi Python compilat amb Cython normalment s'executa més ràpid que en l'intèrpret CPython 2.6.x, encara que les millores absolutes depenen en gran manera el codi. Amb les declaracions de tipus estàtics, l'acceleració típica en càlculs numèrics/matricials és de 100x-1000x[2] En comparació a la típica optimització amb Psyco (Python JIT compiler) què és entre 4x-100x.[3]

Compatibilitat[modifica]

Cython està escrit en Python, així que treballa en Windows, Linux, i MacOS X.

Exemple[modifica]

El següent codi mostra el procés de compilació i execució d'un programa Hola món escrit en Cython.

# hola.pyx - Mòdul Python, aquest codi serà traduït a C per Cython.
def digues_hola():
    print "hola món!"
# executa.py - Fitxer que carrega el mòdul Python creat per Cython.

# Aquest codi serà interpretat, com un codi normal de Python.
# No està compilat a C. 

import hola
hola.digues_hola()
# setup.py - Aquest pas no és necessari si no es vol distribuir el codi.
from distutils.core import setup
from Cython.Build import cythonize

setup(name = 'app de hola món',
      ext_modules = cythonize("*.pyx"))

Les següents dues comandes compilen i excuten el programa

$ python setup.py build_ext --inplace
$ python executa.py

Usos[modifica]

  • Sage, un sistema d'algebra computacional està parcialment escrit en Cython.

Referències[modifica]