为整个程序启用Cython性能分析?

Tho*_*son 5 python profiling cython

Cython文档说"Cython中的分析是由编译器指令控制的.它可以通过Cython装饰器为整个文件或每个函数设置."

有没有简单的方法为整个Python程序启用Cython分析?也就是说,# cython: profile=True每次我想要打开和关闭分析时,有没有办法让我不必经历并添加几十个文件?

Jon*_*sen 6

我相信你可以通过在命令行上传递一个选项来全局设置指令cython.它在"如何设置指令"(http://docs.cython.org/src/reference/compilation.html#how-to-set-directives)下的文档的"编译"部分中进行了描述.

也可以使用-X开关在命令行上传递指令:

$ cython -X boundscheck = True ...

在命令行上传递的指令将覆盖在头注释中设置的指令.

如果您正在编译通过distutils(setup.py)并使用该cythonize函数,则看起来您可以添加选项compiler_directives,即将指令名称映射到相应值的字典.我还没有找到此功能的文档,但它似乎是cython程序调用该cythonize函数的方式(https://github.com/cython/cython/blob/master/Cython/Build/Cythonize.py#L83).

例如

from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = "My hello app",
    ext_modules = cythonize("src/*.pyx",
                            compiler_directives={'profile': True})
)
Run Code Online (Sandbox Code Playgroud)