Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Mengimport Numpy Mengehadkan Multiprocessing kepada Teras Tunggal?

Mengapa Mengimport Numpy Mengehadkan Multiprocessing kepada Teras Tunggal?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-30 20:07:30178semak imbas

Why Does Importing Numpy Limit Multiprocessing to a Single Core?

Impak Numpy Import terhadap Tugasan Teras Berbilang Pemprosesan

Pengenalan:

Pemprosesan Berbilang, perpustakaan Python untuk tugasan selari, bertujuan untuk mengagihkan kerja merentasi pelbagai teras. Walau bagaimanapun, pengguna telah menghadapi isu di mana import Numpy mengganggu pengedaran ini, menyebabkan semua proses pekerja ditugaskan kepada satu teras.

Penjelasan:

Setelah mengimport Numpy , modul intensif CPU tertentu dalam Numpy (cth., OpenBLAS) boleh mengubah suai pertalian teras. Gangguan ini memperuntukkan semua proses pekerja kepada teras yang sama, menghapuskan faedah penyejajaran berbilang pemprosesan.

Penyelesaian:

Untuk menyelesaikan isu ini, tetapkan semula perkaitan tugas menggunakan kod coretan: os.system("taskset -p 0xff %d" % os.getpid()). Perintah ini memaksa sistem pengendalian untuk mengagihkan proses pekerja secara sama rata merentas semua teras yang tersedia.

Pertimbangan Tambahan:

  • Pendekatan ini telah diperhatikan tidak mempunyai kesan yang ketara pada prestasi Numpy, tetapi kesannya mungkin berbeza-beza bergantung pada mesin dan tugas tertentu.

Penyelesaian Alternatif:

  • Tetapkan pembolehubah persekitaran OPENBLAS_MAIN_FREE=1 sebelum menjalankan skrip.
  • Semasa penyusunan, ubah suai OpenBLAS Makefile.rule untuk memasukkan NO_AFFINITY=1.

Dengan menggunakan penyelesaian ini, multiprocessing boleh mengagihkan proses pekerja dengan berkesan merentas berbilang teras, menyelesaikan isu awal pengelompokan teras dan meningkatkan prestasi penyejajaran.

Atas ialah kandungan terperinci Mengapa Mengimport Numpy Mengehadkan Multiprocessing kepada Teras Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn