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