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