当前位置:  开发笔记 > 编程语言 > 正文

在默认的conda numpy中禁用/配置多线程

如何解决《在默认的condanumpy中禁用/配置多线程》经验,为你挑选了1个好方法。

某些numpy版本/版本具有某些操作的多线程执行。关于如何启用此功能,StackOverflow上存在许多问题。从理论上讲,这很棒。但是,我想禁用它。

原因是我在使用多处理进行并行化的脚本上下文中运行了一些numpy代码。默认的numpy多线程似乎不太“智能”,每个进程都将尝试使用计算机上的所有内核,如果我有多个进程正在运行,这将很快使事情过载。(此外,这是一台共享计算机,因此一般来说只是粗鲁的行为)。

我使用的numpy是当前默认安装的版本conda。这是我最终得到的有关numpy版本的信息:

In [1]: import numpy

In [2]: numpy.__version__
Out[2]: '1.10.2'

In [3]: numpy.__config__.show()
lapack_opt_info:
    libraries = ['openblas']
    library_dirs = ['/home/mwaskom/anaconda/lib']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
blas_opt_info:
    libraries = ['openblas']
    library_dirs = ['/home/mwaskom/anaconda/lib']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
openblas_info:
    libraries = ['openblas']
    library_dirs = ['/home/mwaskom/anaconda/lib']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
openblas_lapack_info:
    libraries = ['openblas']
    library_dirs = ['/home/mwaskom/anaconda/lib']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
blas_mkl_info:
  NOT AVAILABLE

当使用numpy时MKL,可以使用环境变量控制线程数。这就是答案在这里。但是,使用MKL构建版本要conda花钱(而且免费的学术选择似乎已停止使用)。所以我需要知道如何在上面显示的conda构建中控制多线程行为。

理想情况下,将有一个环境变量或其他选项,使我可以根据自己的工作选择要使用的线程数。或者,是否可以使用conda安装不会多线程的numpy版本?



1> mwaskom..:

事实证明,多线程是通过OPENBLAS_NUM_THREADS环境变量控制的,因此将其设置为1将保持串行状态。

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有