अंतराल मूल्यों के बावजूद कोड हमेशा 0.0 मान देता है।cpu_percent (अंतराल = कोई नहीं) अंतराल मूल्य पर ध्यान दिए बिना हमेशा 0 देता है PYTHON
import psutil
p = psutil.Process()
print p.cpu_percent(interval=1)
print p.cpu_percent(interval=None)
अंतराल मूल्यों के बावजूद कोड हमेशा 0.0 मान देता है।cpu_percent (अंतराल = कोई नहीं) अंतराल मूल्य पर ध्यान दिए बिना हमेशा 0 देता है PYTHON
import psutil
p = psutil.Process()
print p.cpu_percent(interval=1)
print p.cpu_percent(interval=None)
मेरे अपने कोड से कि काम करता है:
cpu = psutil.cpu_times_percent(interval=0.4, percpu=False)
लेकिन मुझे प्रक्रिया ऑब्जेक्ट का CPU प्रतिशत ढूंढना होगा –
यह व्यवहार documented है:
जब अंतराल
0.0
याNone
पिछले कॉल के बाद गुजरे सिस्टम CPU बार करने के लिए प्रक्रिया बार की तुलना करता है, तुरंत लौट रहा है। इसका मतलब है कि इसे पहली बार कहा जाता है, यह एक अर्थहीन0.0
मान लौटाएगा जिसे आप अनदेखा करना चाहते हैं। इस मामले में सटीकता के लिए अनुशंसा की जाती है कि कॉल के बीच कम से कम0.1
सेकेंड के साथ इस फ़ंक्शन को दूसरी बार कॉल किया जाए।
वहाँ भी एक कॉल के लिए interval=None
उपयोग करने के खिलाफ एक चेतावनी है:
चेतावनी: पहली बार इस समारोह अंतराल =
0.0
याNone
साथ कहा जाता है कि यह एक व्यर्थ0.0
वापस आ जाएगी मूल्य जिसे आप अनदेखा करना चाहते हैं।
यदि interval=None
का उपयोग कर रहे हैं, तो पूर्व कॉल की तुलना में .cpu_percent
पर कॉल करना सुनिश्चित करें।
p = psutil.Process(pid=pid)
p.cpu_percent(interval=None)
for i in range(100):
usage = p.cpu_percent(interval=None)
# do other things
बजाय
:
for i in range(100):
p = psutil.Process(pid=pid)
p.cpu_percent(interval=None)
# do other things
एक प्रक्रिया वस्तु की cpu परिवर्तनशील है। मैंने आपके लिए कुछ परीक्षण किए हैं।
for i in range(10):
p = psutil.Process(3301)
print p.cpu_percent(interval=0.1)
परिणाम: 9.9 0.0 0.0 0.0 0.0 9.9 0.0 9.9 0.0 0.0
तो तुम एक प्रक्रिया वस्तु का सीपीयू प्रतिशत प्राप्त करना चाहते हैं, तो आप निश्चित समय में औसत समय लग सकता है।
test_list = []
for i in range(10):
p = psutil.Process(6601)
p_cpu = p.cpu_percent(interval=0.1)
test_list.append(p_cpu)
print float(sum(test_list))/len(test_list)
परिणाम: 1.98
Uhm मैं इसे पुन: पेश कर सकते हैं। यह 'psutil' के नए संस्करणों में एक बग हो सकता है। (मैंने लाइब्रेरी के अन्य संस्करणों का उपयोग किया है और यह हमेशा ठीक काम करता है)। ध्यान दें कि मैं वर्तमान प्रक्रिया में अलग-अलग थ्रेड शुरू करने वाले गैर-शून्य मान प्राप्त कर सकता हूं। – Bakuriu
क्या आपने इसे 'psutil.cpu_percent (अंतराल = 1)' के साथ https://code.google.com/p/psutil/wiki/Documentation#CPU पर प्रलेखित करने की कोशिश की है? और मुझे लगता है कि प्रक्रिया वर्ग का उपयोग करते समय आपको एक पीआईडी निर्दिष्ट करना होगा (जैसे 'p = psutil.Process (os.getpid())')। –
@ क्रिस्टियनब्रेन्ड: मैंने एक ही लिंक से दस्तावेज पढ़ा और कई पीआईडी (मान्य और चल रहा) निर्दिष्ट किया, लेकिन मुझे हमेशा 0.0 –