es así, aquí es mi problema: Código I en pitón, pero necesito mejorar el rendimiento en alguna parte de mi código que son demasiado lentos. Una buena (y fácil) solución parece ser el uso de cython; Lo intenté y obtuve buenos resultados. El problema es que uso declaración de afirmación en mi código de python. Antes de utilizar Cython, podría compilar mi código Python con la opción -OO, de modo que pueda ofrecer una versión no ejecutar ninguna prueba de la afirmación, y aún así tener la aserción de depuración. Pero los archivos que se compilan en cython parecen ejecutar siempre los asertos. ¿Hay algunas opciones que se pueden pasar a la compilación de cython para eliminar (o no eliminar) las aserciones?¿Cómo eliminar la aserción de python al compilar en cython?
Respuesta
Cython se salta las afirmaciones si se define el preprocesador C macro PYREX_WITHOUT_ASSERTIONS
. Pase -DPYREX_WITHOUT_ASSERTIONS
al compilador C al compilar el archivo C generado. Cómo a esto depende de tu proceso de construcción.
Gracias por esta respuesta rápida. Estoy usando el método Distutils, así que tendré que comprobar cómo pasar la macro al compilador. – user521353
CYTHON_WITHOUT_ASSERTIONS funciona igual de bien, aunque nosotros apoyamos PYREX_WITHOUT_ASSERTIONS para la compatibilidad hacia atrás. – robertwb
Uso pypreprocessor
que también se pueden encontrar en PYPI (Python Package Index) y se encontraron usando PIP.
Aquí está la aplicación:
from pypreprocessor import pypreprocessor
pypreprocessor.parse()
#define debug
#ifdef debug
...place assert to be removed here...
#endif
Esto funciona esencialmente el mismo que el preprocesador de C estándar compilación condicional hace.
Nota al margen: Este módulo es compatible tanto con python2x y python3k.
Descargo de responsabilidad: soy el autor de pypreprocessor.
Esto hará que la carga inicial tarde más debido a la etapa de preprocesador agregada, pero se optimizará el byte de código (.pyc).
- 1. Cython y Fortran - cómo compilar juntos sin f2py
- 2. ¿Puedo configurar pydev para compilar automáticamente archivos cython?
- 3. ¿Cómo compilar y vincular múltiples módulos de python (o paquetes) usando cython?
- 4. Ignorar un elemento al compilar la lista en python
- 5. ¿Cómo se puede compilar el proyecto C++/Cython en un ejecutable?
- 6. Compilando Python a C usando Cython
- 7. Enlace estático de Cython con tiempo de ejecución de Python?
- 8. ¿Cómo imprimir más cuando falla la aserción?
- 9. ImportError de Cython al vincular una biblioteca de C externa
- 10. ¿Cómo compilar scripts de Python para usar en FORTRAN?
- 11. Cómo usar Cython para crear un dll de stand
- 12. cómo deshabilitar por completo la aserción
- 13. La sobrecarga de Python funciones matemáticas utilizando Cython
- 14. clases muy lentas de cython?
- 15. Problema al compilar MySQLdb para Python 2.6 en Win32
- 16. Corrección de Cython
- 17. Python/Cython/C y devoluciones de llamada, llamando a una función de Python desde C usando Cython
- 18. ¿Cómo uso Sphinx con Cython?
- 19. iOS aserción en UICollectionView
- 20. _dl_close Error de aserción
- 21. Cómo compilar ocaml al código nativo
- 22. Error al usar la función lambda con Cython
- 23. Manipulación de cadenas en Cython
- 24. ¡Falló la aserción! Expresión: _BLOCK_TYPE_IS_VALID
- 25. Cython Install GCC error
- 26. ¿Cómo guardo la estructura de directorios al compilar CoffeeScript?
- 27. Error de ARC al compilar
- 28. Aserción en mutex al usar múltiples hilos y mutexes
- 29. Compilar con cython y mingw produce gcc: error: opción de línea de comando no reconocida '-mno-cygwin'
- 30. Cython: implementar devoluciones de llamada
'No sé ... pero ¿qué pasa con hacer una sencilla Programm para comentar toda su afirmación de pitón en el archivo que desea utilizar? – Ant
+1: He encontrado este problema yo mismo. Es extraño que algo diseñado para hacer que tu código sea rápido no hace la optimización más simple de todas. –