首頁 > 後端開發 > Python教學 > 為什麼導入 NumPy 後單核心上的多重處理會停止?

為什麼導入 NumPy 後單核心上的多重處理會停止?

Patricia Arquette
發布: 2024-10-29 18:19:57
原創
276 人瀏覽過

Why Does Multiprocessing Stall on a Single Core When NumPy Is Imported?

為什麼導入NumPy 時多處理會在單核上停止

當嘗試使用joblib 並行化CPU 密集型循環時,您可能會遇到所有工作進程都分配給同一核心的問題,導致沒有效能提升。發生這種情況是由於某些 Python 模組(包括 NumPy)在導入時操縱核心關聯性。

根本原因:

NumPy 連結到多執行緒OpenBLAS 函式庫,這會幹擾核心關聯性

解:解決方案:

要解決此問題,請使用下列指令重設任務親和性:
<code class="python">os.system("taskset -p 0xff %d" % os.getpid())</code>
登入後複製

匯入後放置此行出現問題的模組。這會強制進程在所有可用核心上運行。

替代解決方案:

  • 環境變數:
  • 設定OPENBLAS_MAIN_FREE(或GOTOBLAS_MAIN_FREE)) 環境變數以停用OpenBLAS 的CPU 親和力重置行為。
  • 建置時修改:
  • 透過修改 Makefile.rule 以包含永久停用 CPU 親和力重置從原始程式碼編譯 OpenBLAS 時的行 NO_AFFINITY=1。

以上是為什麼導入 NumPy 後單核心上的多重處理會停止?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板