首頁  >  文章  >  後端開發  >  為什麼導入 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