为何导入NumPy会创建线程?测试案例及现象说明
为什么导入NumPy会创建多个线程?
- NumPy底层依赖的数学计算库(如OpenBLAS、MKL等)默认启用多线程优化,目的是充分利用CPU多核资源加速数值计算。当导入NumPy时,它会初始化这些底层库,而这些库会提前创建多个线程池,为后续的并行计算任务做准备。
- 你看到的24条线程记录,实际是这些底层计算库创建的线程,并非NumPy自身直接创建。不同的计算后端(比如MKL的默认线程数和CPU核心数相关,OpenBLAS也有独立的线程数配置)会导致线程数量有所差异。
- 如果不需要NumPy启用多线程,可以通过设置环境变量来控制:
- 针对OpenBLAS:
export OMP_NUM_THREADS=1或export OPENBLAS_NUM_THREADS=1 - 针对MKL:
export MKL_NUM_THREADS=1
设置后再运行Python脚本,线程数就会减少到1条,和未导入NumPy时的状态一致。
- 针对OpenBLAS:
内容的提问来源于stack exchange,提问作者PaleNeutron
相关产品推荐
相关产品推荐

