全局配置选项#
NumPy 有一些导入时、编译时或运行时的配置选项,这些选项会改变全局行为.这些选项大多数与性能或调试目的相关,对绝大多数用户来说并不感兴趣.
性能相关选项#
用于线性代数的线程数#
NumPy 本身在函数调用期间通常有意限制为单线程,不过它确实支持多个 Python 线程同时运行.请注意,为了高性能的线性代数计算,NumPy 使用了一个 BLAS 后端,例如 OpenBLAS 或 MKL,这些后端可能会使用多个线程,这些线程可以通过环境变量如 OMP_NUM_THREADS
进行控制,具体取决于使用的内容.控制线程数的一种方法是使用 threadpoolctl 包.
madvise 在 Linux 上的大页#
在使用现代 Linux 内核处理非常大的数组时,当使用 透明大页 时,您可以体验到显著的加速.可以通过以下方式查看当前系统的透明大页策略:
cat /sys/kernel/mm/transparent_hugepage/enabled
当设置为 madvise
时,NumPy 通常会使用大页面以提升性能.这种行为可以通过设置环境变量来修改:
NUMPY_MADVISE_HUGEPAGE=0
或者将其设置为 1
以始终启用它.未设置时,默认在 4.6 及以上版本的内核上使用 madvise.这些内核据说在使用大页支持时会显著加速.此标志在导入时检查.
SIMD 特征选择#
设置 NPY_DISABLE_CPU_FEATURES
将在运行时排除 simd 特性.请参阅 运行时分发.
调试相关选项#
在释放数据时,如果没有内存分配策略,则发出警告#
一些用户可能会通过设置 OWNDATA
标志将数据指针的所有权传递给 ndarray
.如果他们在没有设置(手动)内存分配策略的情况下这样做,默认将调用 free
.如果 NUMPY_WARN_IF_NO_MEM_POLICY
设置为 "1"
,将发出 RuntimeWarning
.更好的选择是使用带有解分配器的 PyCapsule
并设置 ndarray.base
.
在 1.25.2 版本发生变更: 此变量仅在第一次导入时检查.