python - 你如何阻止 numpy 多线程?

标签 python multithreading numpy

我必须在与部门其他人共享的计算服务器上定期运行作业,当我开始 10 个作业时,我真的希望它只占用 10 个内核而不是更多;我不在乎每次运行单个内核是否需要更长的时间:我只是不希望它侵占其他人的领域,这将需要我放弃工作等等。我只想拥有 10 个实心核心,仅此而已。

我在 Redhat 上使用 Enthought 7.3-1,它基于 Python 2.7.3 和 numpy 1.6.1,但问题更笼统。

最佳答案

只希望这可以修复您可能使用的所有场景和系统。

  1. 使用 numpy.__config__.show() 查看您使用的是 OpenBLAS 还是 MKL

从现在开始,您可以通过几种方法来做到这一点。

2.1。终端路线 export OPENBLAS_NUM_THREADS=1export MKL_NUM_THREADS=1

2.2(这是我的首选方式)在您的 python 脚本 import os 并添加行 os.environ['OPENBLAS_NUM_THREADS'] = '1'os.environ['MKL_NUM_THREADS'] = '1'.

注意在设置os.environ[VAR]时线程数必须是字符串!此外,您可能需要在导入 numpy/scipy 之前设置此环境变量

除了 openBLAS 或 MKL 之外,可能还有其他选项,但第 1 步将帮助您解决这个问题。

关于python - 你如何阻止 numpy 多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17053671/

相关文章:

python - 如何在Python中生成JWT断言

python - 容器总是可迭代的吗?

Java/野蝇: Threads piling up/Eclipse shows one additional running thread for each request

python - 如何从Python中的多个线程收集数据?

python - openCV中numpy.uint8和numpy.int8的区别?

python - 列表列表到 ndarray

python - 将 json 文件读入 Pandas 数据帧时出现不匹配的 '' "' when when decoding ' 字符串错误

java - CompletableFuture.Delayer 中的静态 ScheduledThreadPoolExecutor

python - 在给定一组坐标的情况下计算曲线下的面积,而不知道函数

python - 是否在每次通过时构造/删除循环中使用的常量列表?