Warum Multiprocessing auf einem einzelnen Kern blockiert, wenn NumPy importiert wird
Beim Versuch, eine CPU-intensive Schleife mithilfe von joblib zu parallelisieren, kann es zu Problemen kommen Ein Problem, bei dem alle Arbeitsprozesse demselben Kern zugewiesen sind, was zu keinem Leistungsgewinn führt. Dies liegt daran, dass bestimmte Python-Module, einschließlich NumPy, die Kernaffinität beim Import manipulieren.
Ursache:
NumPy verknüpft sich mit Multithread-OpenBLAS-Bibliotheken, was die Kernaffinität beeinträchtigt Einstellungen.
Lösung:
Um dieses Problem zu beheben, setzen Sie die Aufgabenaffinität mit dem folgenden Befehl zurück:
<code class="python">os.system("taskset -p 0xff %d" % os.getpid())</code>
Platzieren Sie diese Zeile nach dem Import das Modul, in dem das Problem auftritt. Dies erzwingt, dass der Prozess auf allen verfügbaren Kernen ausgeführt wird.
Alternative Lösungen:
Das obige ist der detaillierte Inhalt vonWarum bleibt die Multiverarbeitung auf einem einzelnen Kern stehen, wenn NumPy importiert wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!