为整个程序启用 Cython 分析?
Posted
技术标签:
【中文标题】为整个程序启用 Cython 分析?【英文标题】:Enable Cython profiling for whole program? 【发布时间】:2014-12-09 17:01:55 【问题描述】:Cython 文档说“Cython 中的分析由编译器指令控制。可以通过 Cython 装饰器为整个文件或每个函数设置它。”
是否有任何简单的方法可以为整个 Python 程序启用 Cython 分析?也就是说,有没有办法让我不必在每次想要打开和关闭分析时都将# cython: profile=True
添加到几十个文件中?
【问题讨论】:
【参考方案1】:我相信您可以通过将命令行上的选项传递给cython
来全局设置指令。它在“如何设置指令”(http://docs.cython.org/src/reference/compilation.html#how-to-set-directives) 下文档的“编译”部分中进行了描述。
也可以使用 -X 开关在命令行上传递指令:
$ cython -X boundscheck=True ...
在命令行上传递的指令将覆盖头 cmets 中设置的指令。
如果您通过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)
)
【讨论】:
应该记录这个 compiler_directives 选项。我花了太长时间才找到这个。以上是关于为整个程序启用 Cython 分析?的主要内容,如果未能解决你的问题,请参考以下文章