Tôi cần lấy CPU% cho mỗi luồng quy trình.Sử dụng CPU cho mỗi chủ đề
Vì vậy, tôi có thể tạo kịch bản đơn giản:
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))
Sau đây là cách TOP trông giống như cho quá trình này:
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
Chủ đề sử dụng 2,6-5,9% CPU, và phụ huynh PID - sử dụng 33,3.
Nhưng - đây là kết quả kịch bản của:
# ./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
Hình như mỗi thread 'ăn' 56-88% CPU ...
Những gì tôi đang thiếu ở đây?
Máy tính có bao nhiêu lõi? – dano
Ngoài ra, các pids hiển thị trong kết quả của tập lệnh không khớp với các pids từ 'top'. Bạn có đang hiển thị nhật ký từ các lần chạy khác nhau không? – dano
Bạn đang sử dụng máy đa lõi? Các công cụ có các cách tiếp cận khác nhau để trình bày CPU% cho các kiến trúc đa lõi; một số người cho rằng 100% là toàn bộ hệ thống ở mức đầy tải và những người khác 100% chỉ là một lõi đầy đủ, vì vậy bạn có thể có các quy trình hoặc chủ đề sử dụng hơn 100% (xem [ví dụ này] (http: //s24.postimg .org/c4he1p9et/image.png)). – jdehesa