全域配置選項#
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
以始終啟用它。如果未設定,則預設是在 Kernel 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 版本中變更:此變數僅在首次匯入時檢查。