The Cython docs say "Profiling in Cython is controlled by a compiler directive. It can be set either for an entire file or on a per function basis via a Cython decorator."
Is there any easy way to enable Cython profiling for an entire Python program? That is, is there a way for me to not have to go through and add # cython: profile=True
to dozens of files each time I want to turn profiling on and off?
I believe you can set the directives globally by passing an option on the command line to cython
. It is described in the "Compilation" section of the documentation under "How to set directives" (http://docs.cython.org/src/reference/compilation.html#how-to-set-directives).
One can also pass a directive on the command line by using the -X switch:
$ cython -X boundscheck=True ...
Directives passed on the command line will override directives set in header comments.
If you are compiling through distutils
(setup.py
) and using the cythonize
function, it appears that you can add the option compiler_directives
, a dictionary that maps directive names to the corresponding value. I have not found documentation for this feature, but it appears to be how the cython
program invokes the cythonize
function (https://github.com/cython/cython/blob/master/Cython/Build/Cythonize.py#L83).
For example
from distutils.core import setup
from Cython.Build import cythonize
setup(
name = "My hello app",
ext_modules = cythonize("src/*.pyx",
compiler_directives={'profile': True})
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With