3 ms·
Cython is a runtime Python-to-C compiler. The speed improvements are worth it given how easy it is to use, I have seen literally a 1000x speedup on a time-seri
by ProblemFactory 13y ago
Cython is a runtime Python-to-C compiler.
The speed improvements are worth it given how easy it is to use, I have seen literally a 1000x speedup on a time-series data analysis script from adding about 10 lines of static type annotations.
The functionality I like best about it are:
* It can be used transparently without any makefiles or compilation steps. Add "import pyximport; pyximport.install()" at the top of your main script, and now every imported Cython-capable module is compiled on the fly at runtime.
* You can start out with no changes to your python modules. All libraries and features still work within compiled modules. Then you can slowly start adding static types to a few variables at a time. The annotated variables become very fast native C integers/doubles/functions, instead of Python objects.
- tomrod 13y agoSounds intriguing. I know a fair bit of C, python, Fortran. I've used f2py a bit. Do you have any good Cython tutorial you like to recommend?
- ProblemFactory 13y agoFor my use cases, the standard documentation and tutorials (http://docs.cython.org/index.html http://docs.cython.org/index.html) have been enough. * Install it with pip, the packages in your OS distribution may be out of date, * Rename your numeric code module's .py file to .pyx, * Use pyximport from the main script ( http://docs.cython.org/src/userguide/source_files_and_compilation.html#pyximport http://docs.cython.org/src/userguide/source_files_and_compil...) to have it compiled at runtime without any extra build steps, and then * Start experimenting with adding a few "cdef"s (http://docs.cython.org/src/quickstart/cythonize.html http://docs.cython.org/src/quickstart/cythonize.html and http://docs.cython.org/src/tutorial/numpy.html http://docs.cython.org/src/tutorial/numpy.html)