python - 限制numpy中的线程数

标签 python multithreading numpy

似乎我的 numpy 库正在使用 4 个线程,设置 OMP_NUM_THREADS=1 并不能阻止这一点。

numpy.show_config() 给了我这些结果:

atlas_threads_info:
    libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
    library_dirs = ['/usr/lib64/atlas']
    define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
    language = f77
    include_dirs = ['/usr/include']
blas_opt_info:
    libraries = ['ptf77blas', 'ptcblas', 'atlas']
    library_dirs = ['/usr/lib64/atlas']
    define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
    language = c
    include_dirs = ['/usr/include']
atlas_blas_threads_info:
    libraries = ['ptf77blas', 'ptcblas', 'atlas']
    library_dirs = ['/usr/lib64/atlas']
    define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
    language = c
    include_dirs = ['/usr/include']
openblas_info:
  NOT AVAILABLE
lapack_opt_info:
    libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
    library_dirs = ['/usr/lib64/atlas']
    define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
    language = f77
    include_dirs = ['/usr/include']

所以我知道它使用的是 blas,但我不知道如何让它使用 1 个线程进行矩阵乘法。

最佳答案

有一些常见的多 CPU 库可用于数值计算,包括 NumPy 内部。您可以在运行脚本之前设置一些环境标志,以限制它们使用的 CPU 数量。

尝试设置以下所有内容:

export MKL_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
export OMP_NUM_THREADS=1

有时很难看出究竟在哪里引入了多线程。

其他答案显示其他库的环境标志。它们也可能起作用。

关于python - 限制numpy中的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30791550/

相关文章:

c# - 我应该在我的代码中使用 thread.sleep 还是定时器?

java - 静态同步方法和非静态同步方法都可以作用于静态成员变量,这可能会导致意外行为

python - 为什么通过 Python 的 numpy.loadtxt 导入的时间戳会延迟 6 到 7 个小时?

python - numpy 广播 bool 索引

python - 经过训练的 TensorFlow 模型始终输出零

python - 有没有更好的方法来检查单词第一个位置的元音?

c - 必须在主函数中调用 pthread_create() 和 pthread_join() 吗?

python-2.7 - 通过另一个 numpy 数组索引 numpy 数组列

python - 确定特征评分的阈值[随机森林]

python - 使用 python 对数据框列中以逗号分隔的单元格中的值求和