gpt4 book ai didi

python - 本地设置的 Cython 编译器指令会影响一个或所有功能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:09 25 4
gpt4 key购买 nike

我正致力于使用 Cython 加速一些 Python/Numpy 代码,我不太清楚“本地”设置(如文档中定义的 here)编译器指令的效果。就我而言,我想使用:

@cython.wraparound (False) #turn off negative indexing
@cython.boundscheck(False) #turn off bounds-checking

我知道我可以在我的 setup.py 文件中全局定义它,但我正在为非 Cython 用户开发并且希望这些指令从 .pyx 中显而易见 文件。

如果我正在编写一个 .pyx 文件,其中定义了多个函数,我只需要设置一次这些函数,还是它们只适用于定义的下一个函数?我问的原因是文档经常说“关闭此函数的 boundscheck”之类的话,让我想知道它是否只适用于定义的下一个函数。

换句话说,我是否需要这样做:

import numpy as np
cimport numpy as np
cimport cython

ctypedef np.float64_t DTYPE_FLOAT_t

@cython.wraparound (False) #turn off negative indexing
@cython.boundscheck(False) # turn off bounds-checking
def myfunc1(np.ndarray[DTYPE_FLOAT_t] a):
do things here

def myfunc2(np.ndarray[DTYPE_FLOAT_t] b):
do things here

或者我需要这样做吗:

import numpy as np
cimport numpy as np
cimport cython

ctypedef np.float64_t DTYPE_FLOAT_t

@cython.wraparound (False) #turn off negative indexing
@cython.boundscheck(False) # turn off bounds-checking
def myfunc1(np.ndarray[DTYPE_FLOAT_t] a):
do things here

@cython.wraparound (False) #turn off negative indexing
@cython.boundscheck(False) # turn off bounds-checking
def myfunc2(np.ndarray[DTYPE_FLOAT_t] b):
do things here

谢谢!

最佳答案

documentation说明如果要全局设置编译器指令,则需要在文件顶部添加注释。例如。

#!python
#cython: language_level=3, boundscheck=False

关于python - 本地设置的 Cython 编译器指令会影响一个或所有功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com