Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Cython
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Ficha de lenguaje de programación |nombre = Cython |logo = |paradigma = [[Lenguaje de programación multiparadigma|multiparadigma]]: [[Programación orientada a objetos|orientado a objetos]], [[Programación imperativa|imperativo]], [[Programación funcional|funcional]], [[Reflexión (informática)|reflexivo]] |año = |diseñador = |desarrollador = Robert Bradshaw, Stefan Behnel, et al. |tipo_dato = fuerte, estático, dinámico |implementaciones = |dialectos = |influido_por = [[C (lenguaje de programación)|C]], [[Python]] |ha_influido = }} '''Cython''' es un [[lenguaje de programación]] para simplificar la escritura de módulos de extensión para Python en C y C++. Siendo estrictos, la sintaxis de Cython es la misma de Python pero con algunos agregados: * Se pueden llamar funciones en C, o funciones/métodos de C++, directamente desde el código en Cython. * Es posible usar tipos estáticos en las variables (enteros, flotantes, o cualquier tipo de dato). Cython compila a código en C o C++ desde Python, y el resultado puede ser usado desde Python como un "Modulo de extensión", o como una aplicación embebida en el intérprete [[Python|CPython]]. == Historia == Cython es un proyecto derivado de [http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/ Pyrex], pero implementa más funcionalidades y optimizaciones que este.<ref>[http://wiki.cython.org/DifferencesFromPyrex Differences between Cython and Pyrex] {{Wayback|url=http://wiki.cython.org/DifferencesFromPyrex |date=20110725214351 }}</ref> Los archivos Cython tienen una extensión .pyx. En su forma más básica, el código Cython se ve exactamente como el código Python.<ref>{{cite web|url=https://github.com/cython/cython/wiki/DifferencesFromPyrex|title=Differences between Cython and Pyrex}}</ref><ref>{{cite web|last=Ewing|first=Greg|url=http://mail.python.org/pipermail/python-dev/2011-March/109642.html|title=Re: VM and Language summit info for those not at Pycon (and those that are!)|type=Message to the electronic mailing-list <code>python-dev</code>|date=2011-03-21|accessdate=5 May 2011}}</ref> Sin embargo, mientras que Python estándar se escribe dinámicamente, en Cython, los tipos se pueden proporcionar opcionalmente, lo que permite un rendimiento mejorado, permitiendo que los bucles se conviertan en bucles C siempre que sea posible. Por ejemplo:<ref>{{cite book|title=Learn Python the hard way|author=Zed Shaw|year=2017|ISBN=978-0134692883|publisher=Addison-Wesley Professional|url=https://python.engineering/learn-python-the-hard-way/|fechaacceso=22 de octubre de 2021|fechaarchivo=6 de septiembre de 2021|urlarchivo=https://web.archive.org/web/20210906151318/https://python.engineering/learn-python-the-hard-way/|deadurl=yes}}</ref> <syntaxhighlight lang="cython"> def primes(int kmax): # The argument will be converted to int or raise a TypeError. cdef int n, k, i # These variables are declared with C types. cdef int p[1000] # Another C type result = [] # A Python type 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 </syntaxhighlight> == Ventajas == La ventaja esencial de este enfoque, es que al entremezclar perfectamente código Python/C (es decir, C usando <python.h>) es que el código Python existente se puede ajustar a casi la velocidad de C con solo añadir unos pocos tipos estáticos a las declaraciones y haciendo algunas adaptaciones en los bucles críticos -sin necesidad de una interfaz complicada o muy invasiva del código. La velocidad de codificación y la legibilidad del código sigue siendo bastante similar a la que se tiene usando Python. Debido a reducción del consumo general en las estructuras de control (especialmente los bucles), las optimizaciones optimistas y la (limitada) inferencia de tipos, el código Python compilado con Cython normalmente se ejecuta más rápido que en el intérprete [[CPython]] 2.6.x, aunque las mejoras absolutas dependen en gran medida del código. Con las declaraciones de tipos estáticos, la aceleración típica en cálculos numéricos/matriciales es de 100x-1000x<ref>{{Cita web |url=http://thread.gmane.org/gmane.comp.python.cython.devel/4602/focus=4619 |título=gmane.comp.python.cython.devel - Passing a pointer from Python |fechaacceso=3 de mayo de 2011 |urlarchivo=https://web.archive.org/web/20170214183219/http://thread.gmane.org/gmane.comp.python.cython.devel/4602/focus=4619 |fechaarchivo=14 de febrero de 2017 }}</ref> En comparación a la típica optimización con [[Psyco]] (Python [[Compilación en tiempo de ejecución|JIT]] compiler) qué es entre 4x-100x.<ref>[http://psyco.sourceforge.net/introduction.html Psyco - Introduction]</ref> == Compatibilidad == Cython está escrito en Python, así que trabaja en [[Microsoft Windows|Windows]], [[Linux]], y [[MacOS X]]. == Usos == * [[SageMath]], un sistema de álgebra computacional está parcialmente escrito en Cython. == Referencias == {{listaref}} == Páginas externas == * [http://cython.org Sitio web oficial] {{Control de autoridades}} [[Categoría:Lenguajes de programación orientada a objetos]] [[Categoría:Software que utiliza la licencia Apache]] [[Categoría:Software de 2007]] [[Categoría:Lenguajes de programación imperativa]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
Cython
»
Añadir idiomas
Añadir tema