मुझे प्रत्येक प्रक्रिया थ्रेड के लिए CPU% प्राप्त करने की आवश्यकता है।सीपीयू उपयोग प्रति थ्रेड
तो, मैं सरल स्क्रिप्ट बनाने:
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))
यहाँ कैसे टॉप इस प्रक्रिया के लिए की तरह लग रहा है:
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
धागे 2.6-5.9% सीपीयू उपयोग करते हैं, और माता पिता के पीआईडी - 33.3 का उपयोग करें।
लेकिन - यहाँ स्क्रिप्ट के परिणाम है:
# ./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
प्रत्येक थ्रेड 'खाने' 56-88% सीपीयू की तरह लग रहा ...
क्या मैं यहाँ याद कर रहा हूँ?
कंप्यूटर के कितने कोर हैं? – dano
इसके अलावा, स्क्रिप्ट के परिणाम में दिखाई देने वाली बोलियां 'शीर्ष' से पिड्स से मेल नहीं खाती हैं। क्या आप अलग-अलग रनों से लॉग दिखा रहे हैं? – dano
क्या आप एक बहु-कोर मशीन का उपयोग कर रहे हैं? बहु-कोर आर्किटेक्चर के लिए CPU% प्रस्तुत करने के लिए टूल्स के अलग-अलग दृष्टिकोण हैं; कुछ मानते हैं कि 100% पूर्ण लोड पर पूरी प्रणाली है और अन्य 100% पूर्ण रूप से केवल एक कोर है, इसलिए आपके पास 100% से अधिक का उपयोग कर प्रक्रिया या धागे हो सकते हैं (देखें [यह उदाहरण] (http: //s24.postimg .org/c4he1p9et/image.png))। – jdehesa