Pourquoi le multitraitement se bloque sur un seul cœur lorsque NumPy est importé
Lorsque vous essayez de paralléliser une boucle gourmande en CPU à l'aide de joblib, vous pouvez rencontrer un problème où tous les processus de travail sont affectés au même noyau, ce qui n'entraîne aucun gain de performances. Cela se produit en raison de certains modules Python, y compris NumPy, qui manipulent l'affinité de base lors de l'importation.
Cause fondamentale :
Liens NumPy vers les bibliothèques OpenBLAS multithread, ce qui interfère avec l'affinité de base paramètres.
Solution :
Pour résoudre ce problème, réinitialisez l'affinité de la tâche à l'aide de la commande suivante :
<code class="python">os.system("taskset -p 0xff %d" % os.getpid())</code>
Placez cette ligne après l'importation le module où le problème se pose. Cela force le processus à s'exécuter sur tous les cœurs disponibles.
Solutions alternatives :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!