全局配置选项#
NumPy 有一些导入时,编译时或运行时配置选项,可更改全局行为.其中大多数与性能或调试目的相关,并且对绝大多数用户来说不会感兴趣.
与性能相关的选项#
用于线性代数的线程数#
NumPy 本身通常有意限制在函数调用期间使用单个线程,但它确实支持同时运行多个 Python 线程.请注意,对于高性能线性代数,NumPy 使用 BLAS 后端(例如 OpenBLAS 或 MKL),它们可能使用多个线程,这些线程可能由环境变量(例如 OMP_NUM_THREADS )控制,具体取决于所使用的后端.控制线程数的一种方法是使用 threadpoolctl 包.
Linux 上的 madvise hugepage#
在现代 Linux 内核上处理非常大的数组时,当使用 transparent hugepage 时,您可以体验到显着的加速.可以使用以下命令查看透明巨页的当前系统策略:
cat /sys/kernel/mm/transparent_hugepage/enabled
当设置为 madvise 时,NumPy 通常会使用巨页来提高性能.可以通过设置环境变量来修改此行为:
NUMPY_MADVISE_HUGEPAGE=0
或将其设置为 1 以始终启用它.如果未设置,则默认是在 Kernel 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 版本发生变更: 此变量仅在首次导入时检查.