全局配置选项#
NumPy 有一些在导入时、编译时或运行时可配置的选项,这些选项会改变全局行为。其中大部分与性能或调试目的相关,对于绝大多数用户来说并不重要。
与性能相关的选项#
用于线性代数的线程数#
NumPy 本身在函数调用期间通常被有意地限制为单线程,但它支持同时运行多个 Python 线程。请注意,为了获得高性能的线性代数,NumPy 会使用 BLAS 后端(如 OpenBLAS 或 MKL),这些后端可能会使用多个线程,具体取决于使用的 BLAS,这些线程可能受 OMP_NUM_THREADS 等环境变量的控制。控制线程数的一种方法是使用 threadpoolctl 包。
Linux 上的 madvise hugepage#
在使用现代 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。更好的替代方法是使用带有 deallocator 的 PyCapsule 并设置 ndarray.base。
版本 1.25.2 中已更改:此变量仅在首次导入时检查。