Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Pekerja Joblib Saya Terperangkap pada Satu Teras Selepas Mengimport NumPy?

Mengapa Pekerja Joblib Saya Terperangkap pada Satu Teras Selepas Mengimport NumPy?

Susan Sarandon
Lepaskan: 2024-10-29 19:43:29
asal
828 orang telah melayarinya

Why Are My Joblib Workers Stuck on One Core After Importing NumPy?

Isu Perkaitan Teras Berbilang pemprosesan

Dalam senario tertentu, apabila mengimport perpustakaan NumPy dan cuba menyelaraskan gelung intensif CPU menggunakan modul joblib , mungkin diperhatikan bahawa proses pekerja yang diberikan kepada gelung semuanya terhad kepada satu teras, menghalang peningkatan prestasi.

Isu ini timbul disebabkan oleh interaksi antara NumPy dan perpustakaan OpenBLAS asas, yang sering digunakan untuk operasi berbilang benang. Secara lalai, perpustakaan ini mungkin mengganggu tetapan perkaitan teras, yang membawa kepada semua proses pekerja diperuntukkan kepada teras yang sama.

Penyelesaian: Tetapkan Semula Perkaitan Tugas

Sebuah cara yang mudah penyelesaian adalah untuk menetapkan semula pertalian tugas menggunakan fungsi os.system() selepas mengimport modul yang terjejas. Dengan melaksanakan perintah os.system("taskset -p 0xff %d" % os.getpid()), pertalian teras ditetapkan semula, membenarkan proses pekerja merebak ke semua teras yang tersedia.

Lumpuhkan Tetapan Semula Perkaitan CPU OpenBLAS

Sebagai alternatif, gelagat menetapkan semula pertalian CPU OpenBLAS boleh dilumpuhkan sama ada pada masa jalan atau pada masa bina. Pada masa jalanan, menetapkan pembolehubah persekitaran OPENBLAS_MAIN_FREE kepada 1 menghalang perpustakaan daripada melaraskan pertalian teras. Sebagai alternatif, semasa proses penyusunan OpenBLAS, menambahkan NO_AFFINITY=1 pada Makefile.rule menyahdayakan tingkah laku ini secara kekal.

Atas ialah kandungan terperinci Mengapa Pekerja Joblib Saya Terperangkap pada Satu Teras Selepas Mengimport NumPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan