使用 pyximport 时如何设置 Cython 编译器标志?
Posted
技术标签:
【中文标题】使用 pyximport 时如何设置 Cython 编译器标志?【英文标题】:How can I set Cython compiler flags when using pyximport? 【发布时间】:2014-11-09 22:14:59 【问题描述】:这个问题 (How does one overwrite the default compile flags for Cython when building with distutils?) 描述了在使用 distutils 时如何设置默认 Cython 标志。
但是如果我只使用 pyximport,我该如何设置默认编译标志?
import pyximport
pyximport.install() # Pass compile flags here somehow?
【问题讨论】:
【参考方案1】:您应该使用.pyxbld
文件,例如this question。
对于名为 foo.pyx
的文件,您将创建一个 foo.pyxbld
文件。以下将提供额外的优化参数:
def make_ext(modname, pyxfilename):
from distutils.extension import Extension
return Extension(name=modname,
sources=[pyxfilename],
extra_compile_args=['-O3', '-march=native'])
我认为,如果您跳过足够多的障碍(与distribute
混在一起)以获得它喜欢的形式的setup_args,但在pyximport
模块中,我认为可以将额外的设置选项传递给pyximport.install
它建议使用.pyxbld
文件的文档,并且在pyximport
的测试代码中仅测试该方法,因此如果有另一种方法,则应将其视为不稳定/未经测试,而应将.pyxbld
视为正确的做法这个。
【讨论】:
.pyxbld
文件是否记录在任何地方?如果是,我找不到它。
好的。它是否记录在人们每天实际使用的任何地方(阅读:我可以通过谷歌等找到的地方)?
@FakeName 据我所知,它只是纯文本,您可以在 git 存储库中读取它:github.com/cython/cython/blob/master/pyximport/pyximport.py 或者您可以使用 pdoc 之类的工具将其构建到 html 文件中, 总的来说 Cython 在线文档是随意的,如果你想弄清楚的话,你经常不得不去源文件以上是关于使用 pyximport 时如何设置 Cython 编译器标志?的主要内容,如果未能解决你的问题,请参考以下文章
使用 pyximport reload_support 重新加载 Cython 不起作用
如何从 cython 设置文件中删除 -pthread 编译器标志