Interpréteur Python n'utilisant que 12% de la puissance du processeur

25

J'utilise python sur ubuntu pour l'analyse de texte. Malgré la charge de travail importante, le programme utilise le processeur, comme le montre le moniteur système qui reste constamment à 12%.

J'ai changé la priorité du programme de Normal à Very High mais cela n'a eu aucun effet.

Qu'est-ce qui limite la quantité d'utilisation du processeur que mon programme python peut obtenir et comment puis-je changer cela, afin que le programme puisse utiliser plus de puissance processeur?

    
posée Matthias Herrmann 24.08.2017 - 15:33
la source

2 réponses

72

Je suppose que vous avez un CPU avec 8 cœurs virtuels (quad-core avec hyper-threading probablement)? Cela signifie qu'un thread de processeur / cœur virtuel complètement chargé équivaut à une charge totale de 12,5%.

L'interpréteur Python est une application qui ne s'exécute que par un seul processus par défaut et n'est donc pas en mesure de tirer parti de plusieurs cœurs virtuels. Même si le code que vous utilisez utilise du multithreading, il n’utilisera toujours qu’un seul thread CPU / cœur virtuel, à cause de la GIL (interpréteur global). verrouiller) .

Seulement si votre programme Python utilise le multitraitement , ce qui en fait démarre plusieurs instances de l'interpréteur Python et leur permet d'effectuer vos tâches en parallèle, vous pouvez tirer parti de plusieurs threads / processeurs virtuels. (Comme l'a souligné @SargeBorsch dans son commentaire, il existe également des moyens avancés pour y parvenir sans multitraitement, mais ce n'est normalement pas quelque chose que vous écrivez rapidement.)

    
réponse donnée Byte Commander 24.08.2017 - 15:56
la source
18

Une autre possibilité, moins probable dans ce cas, est que le programme soit lié au disque, c'est-à-dire qu'il lit et écrit sur / depuis le disque qui est lent et que le processeur attend le disque.

    
réponse donnée jmmcd 24.08.2017 - 20:46
la source

Lire d'autres questions sur les étiquettes