Cython
| Desenvolupador(s) | Robert Bradshaw, Stefan Behnel, et al. |
|---|---|
| Versió inicial | 28 Juliol 2007[1] |
| Escrit en | Python, C |
| Sistema operatiu | multiplataforma |
| Tipus | llenguatge de programació |
| Llicència | Apache License |
| Lloc web | cython.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 | modifica el codi]
Cython és un projecte derivat de Pyrex, però implementa més funcionalitats i optimitzacions que aquest.[2]
Avantatges[modifica | modifica el codi]
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 mesurada el codi. Amb les declaracions de tipus estàtics, l'acceleració típica en càlculs numèrics/matricials és de 100x-1000x[3] En comparació a la típica optimització amb Psyco (Python JIT compiler) què és entre 4x-100x.[4]
Compatibilitat[modifica | modifica el codi]
Cython està escrit en Python, així que treballa en Windows, Linux, i MacOS X.
Exemple[modifica | modifica el codi]
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 | modifica el codi]
- Sage, un sistema d'algebra computacional està parcialment escrit en Cython.
Referències[modifica | modifica el codi]
- ↑ Dr. Behnel, Stefan. «The Cython Compiler for C-Extensions in Python». EuroPython. Vilnius/Lietuva, 2008.
- ↑ Differences between Cython and Pyrex
- ↑ gmane.comp.python.cython.devel - Passing a pointer from Python
- ↑ Psyco - Introduction

