Ho bisogno di ottenere% CPU per ogni thread di processo.Utilizzo CPU per thread
Così, ho creare semplici script:
import psutil
from psutil import Process
p = psutil.Process(4499)
treads_list = p.get_threads()
for i in treads_list:
o = i[0]
th = psutil.Process(o)
cpu_perc = th.get_cpu_percent(interval=1)
print('PID %s use %% CPU = %s' % (o, cpu_perc))
Ecco come TOP assomiglia per questo processo:
4942 teamcity 20 0 3288m 831m 3124 R 33.3 10.6 10303:37 java
32700 teamcity 20 0 3288m 831m 3124 S 5.9 10.6 18:49.99 java
5824 teamcity 20 0 3288m 831m 3124 S 5.9 10.6 1:57.90 java
4621 teamcity 20 0 3288m 831m 3124 S 3.0 10.6 1834:09 java
4622 teamcity 20 0 3288m 831m 3124 S 2.6 10.6 1844:15 java
discussioni utilizzano 2,6-5,9% della CPU, e genitore PID - utilizzano 33,3.
Ma - qui è il risultato di script:
# ./psutil_threads.py
PID 10231 use % CPU = 60.9
PID 10681 use % CPU = 75.3
PID 11371 use % CPU = 69.9
PID 11860 use % CPU = 85.9
PID 12977 use % CPU = 56.0
PID 14114 use % CPU = 88.8
Sembra che ogni thread 'mangiare' 56-88% della CPU ...
Quello che mi manca qui?
Quanti core ha il computer? – dano
Inoltre, i pid visualizzati nel risultato dello script non corrispondono ai pid da 'top'. Stai visualizzando i log di diverse esecuzioni? – dano
Stai utilizzando un computer multi-core? Gli strumenti hanno approcci diversi per presentare la CPU% per architetture multi-core; alcuni considerano che il 100% sia l'intero sistema a pieno carico e altri il 100% sia solo un core al completo, quindi è possibile che processi o thread utilizzino più del 100% (vedere [questo esempio] (http: //s24.postimg .org/c4he1p9et/immagine.png)). – jdehesa