全局配置选项#
NumPy 有一些导入时、编译时或运行时配置选项,它们会改变全局行为。其中大多数与性能或调试目的相关,对绝大多数用户来说并不感兴趣。
性能相关选项#
用于线性代数的线程数#
NumPy 本身在函数调用期间通常有意限制为单线程,但它确实支持多个 Python 线程同时运行。请注意,为了实现高性能线性代数,NumPy 使用 BLAS 后端(例如 OpenBLAS 或 MKL),这些后端可能会使用多个线程,而这些线程可能受环境变量(例如 OMP_NUM_THREADS
)的控制,具体取决于所使用的后端。控制线程数的一种方法是使用 threadpoolctl 包。
Linux 上的 madvise 大页#
在现代 Linux 内核上处理超大数组时,当使用透明大页(transparent hugepage)时,您会体验到显著的加速。透明大页的当前系统策略可以通过以下方式查看:
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 版中的变更:此变量仅在首次导入时检查。