2010-01-12 5 views
7

J'ai une application Python multi-thread, et je suis actuellement en train de dépanner une utilisation du processeur très élevée (90% ou plus).Utilisation du processeur de profil Python par thread

Je vais essayer le profileur, mais je voulais voir s'il y avait un moyen d'obtenir l'utilisation du processeur par thread à partir de l'application. Je comprends que os.times() obtiendra l'utilisation de l'unité centrale dans son ensemble - est-ce qu'il y a quelque chose que je peux exécuter à l'intérieur de chaque thread pour obtenir l'utilisation de chaque thread? Il serait très utile de déterminer quel thread est en train de manger CPU.

+0

Quels sont les systèmes d'exploitation comptez-vous tester sur/support? –

+0

Principalement Windows, mais nous soutenons également Linux. L'utilisation élevée du processeur se produit sur Windows, mais nous ne l'avons pas testé sur Linux à ce stade. – Dave

Répondre

1

À part le profileur, je ne pense pas que Python ait beaucoup de fonctions intégrées pour surveiller l'utilisation individuelle du processeur de threads. En outre, this post fournit un exemple d'implémentation simple d'un profileur de thread. Il semble principalement axé sur les systèmes basés sur Unix, mais c'est un début.

0

Si vous êtes sur Windows, vous pouvez jeter un oeil à l'Explorateur de processus ("procexp.exe" livré avec Microsoft's Sysinternals Tools). Il y a un onglet "Threads" dans les propriétés de chaque processus qui répertorie tous les threads et leur temps CPU.

Si cela ne vous donne pas assez d'informations, utilisez les profiling mechanisms de Python, qui ne sont pas trop difficiles à utiliser.

Questions connexes