首页  >  文章  >  后端开发  >  为什么导入 Numpy 会将多处理限制为单核?

为什么导入 Numpy 会将多处理限制为单核?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-30 20:07:30178浏览

Why Does Importing Numpy Limit Multiprocessing to a Single Core?

Numpy 导入对多处理核心分配的影响

简介:

Multiprocessing,一个用于并行化任务的 Python 库,旨在跨多个核心分配工作。然而,用户遇到了 Numpy 的导入干扰这种分布的问题,导致所有工作进程都被分配到单个核心。

说明:

导入 Numpy 时,Numpy 中的某些 CPU 密集型模块(例如 OpenBLAS)可以修改核心关联性。这种干扰将所有工作进程分配给同一核心,从而消除了多处理的并行化优势。

解决方法:

要解决此问题,请使用代码重置任务关联性代码片段: os.system("taskset -p 0xff %d" % os.getpid())。此命令强制操作系统在所有可用核心之间均匀分配工作进程。

其他注意事项:

  • 据观察,此方法没有重大影响影响 Numpy 的性能,但效果可能会因特定机器和任务而异。

替代解决方案:

  • 设置环境变量 OPENBLAS_MAIN_FREE=1在运行脚本之前。
  • 在编译期间,修改 OpenBLAS Makefile.rule 以包含 NO_AFFINITY=1。

通过应用这些解决方案,多处理可以有效地将工作进程分布在多个核心上,解决了核心集群的初始问题,增强了并行化性能。

以上是为什么导入 Numpy 会将多处理限制为单核?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn