Pourquoi mon programme Python moyenne, seulement 33% de CPU par processus? Comment puis-je faire Python utiliser tous les processeurs disponibles?
J'utilise Python 2.5.4. Mon ordinateur: PROCESSEUR AMD Phenom X3 720BE, carte Mère 780G, 4 go de RAM, Windows 7 32 bits.
J'utilise Python threading, mais ne peut pas faire tous les python.exe processus de consommer 100% de CPU. Pourquoi sont-ils à l'aide de seulement environ 33% à 34% en moyenne?.
Je tiens à adresser toutes disponibles les ressources de l'ordinateur vers ces grands calculs afin de les terminer le plus rapidement possible.
EDIT:
Merci tout le monde. Maintenant, je suis en utilisant en Parallèle Python et tout fonctionne bien. Mon CPU maintenant toujours à 100%. Merci à tous!
OriginalL'auteur AloneRoad | 2009-11-16
Vous devez vous connecter pour publier un commentaire.
Il semble que vous avez un 3-core CPU. Si vous voulez utiliser plus d'un CPU core natif de code Python, vous devez vous frayer les multiples processus. (Deux ou plusieurs threads Python ne peut pas s'exécuter simultanément sur différents Processeurs)
Comme R. Pate dit, Python
multiprocessing
module est un moyen. Cependant, je suggère de regarder à En Parallèle Python à la place. Il prend soin de distribuer les tâches et de transmission de message. Vous pouvez même exécuter des tâches sur de nombreux ordinateurs distincts avec peu de changement dans votre code.Utilisation est assez simple:
Pour des raisons pratiques, tous les natifs du code Python maintenez le GIL à tout moment.
À l'aide de modules d'extension est très pratique, au moins pour moi. (J'ai encore upvoted pour le PP de référence. 🙂
OriginalL'auteur intgr
Essayer le multitraitement module, comme Python, alors qu'il a de vrai, de threads natifs, limite leur utilisation simultanée, tandis que le GIL est tenue. Une autre alternative, et quelque chose que vous devriez regarder si vous avez besoin d' réel vitesse, c'est l'écriture d'un C module d'extension et d'appeler les fonctions de Python. Vous pouvez relâcher le GIL dans ces fonctions C.
Voir aussi David Beazley's Mindblowing GIL.
OriginalL'auteur
Mondial Interprète De Verrouillage
Quand le curseur est sur le haut/bas de vote de la flèche, le texte est clair: "cette réponse est utile/pas utile". Idiotement, il semble que de nombreux utilisateurs de lire "j'aime cette réponse/je n'aime pas cette réponse et cette personne ne devrait mourir d'une mort horrible" au lieu de cela, et de voter en conséquence. Si j'avais à downvote une réponse, je l'avais downvote nicholaides réponse, mais je ne peux pas, pour l'infime chance qu'il a raison (bien que je crois fermement qu'il n'est pas).
OriginalL'auteur Sivvy
D'utilisation de l'UC on dirait que vous êtes toujours en cours d'exécution sur un seul core. Essayez d'exécuter un calcul trivial avec 3 ou plus de fils avec le même filetage code et de voir si elle utilise tous les cœurs. Si ça ne marche pas, quelque chose ne va pas avec votre enfilage code.
qid: Pas vrai! Code en C module d'extension peut libérer le GIL et faire un peu de travail alors que les autres threads sont en cours d'exécution simultanément.
mon CPU utilise 3 cœurs avec la même charge
OriginalL'auteur Saulius Žemaitaitis
Ce sujet Stackless Python?
OriginalL'auteur
Vous goulot d'étranglement se situe probablement quelque part d'autre, comme le disque dur (paging), ou l'accès à la mémoire.
C'est probablement un GIL question connexe sur un 3-core de la machine, pas de la mémoire ou du disque de problème d'accès.
ouais.. j'ai 8 cœurs, et le %d'utilisation du PROCESSEUR par un dur travail pythonw.exe le processus est de 12,5 = 100/8
OriginalL'auteur nicholaides
Vous devez effectuer un certain Système d'Exploitation et le Python de surveillance pour déterminer où le col de la bouteille est.
Voici quelques infos pour windows 7:
De l'analyseur de performances: Vous pouvez utiliser l'analyseur de Performances Windows afin d'examiner comment les programmes que vous exécutez affecter les performances de votre ordinateur, à la fois en temps réel et par la collecte de données de journal pour analyse ultérieure. (Panneau de configuration-> Tous les Éléments du Panneau de configuration->Informations et Outils de Performance-> Outils de pointe- > Affichage de l'analyseur de Performances)
Moniteur de ressources: le Moniteur de Ressources Windows est un outil qui vous permet d'afficher des informations sur l'utilisation du matériel (PROCESSEUR, mémoire, disque et réseau) et les logiciels (les descripteurs de fichiers et modules) et des ressources en temps réel. Vous pouvez utiliser le Moniteur de Ressources pour démarrer, arrêter, suspendre et reprendre des processus et des services. (Panneau de configuration-> Tous les Éléments du Panneau de configuration->Informations et Outils de Performance-> Outils de pointe- > Afficher le Moniteur de Ressources)
OriginalL'auteur Chad