2009-09-25 11 views
12

मैं अपनी मशीन पर चल रही प्रक्रिया के व्यवहार को ट्रैक करने के लिए एक Wmi और पायथन का उपयोग कर रहा हूं।डब्ल्यूएमआई के साथ एक प्रक्रिया के सीपीयू और मेमोरी उपयोग को कैसे जानें?

 
from win32com.client import GetObject 
wmi = GetObject('winmgmts:') 
processes = wmi.InstancesOf('Win32_Process') 

for process in processes: 
    print process.ProcessId, process.Name 

Win32_Process एक lot of information है लेकिन मैं सीपीयू की खपत पर नज़र रखने के लिए कुछ भी नहीं दिख रहा है। विंडो टास्क मॉनिटर इस जानकारी को दिखा रहा है, इसलिए मुझे लगता है कि इसे प्राप्त करना संभव है।

मैंने सोचा था कि WorkingSetSize संपत्ति प्रक्रिया की स्मृति की खपत दे रहा है लेकिन मैं क्या TaskMonitor द्वारा दिया जाता है से अलग मूल्य देख सकते हैं।

किसी दिए गए प्रक्रिया के लिए इन 2 मानों को कैसे प्राप्त करें?

अद्यतन: टास्क मॉनिटर PrivateWorkingSetSize दिखाता है जो Win32_Process के साथ उपलब्ध नहीं है। वर्किंगसेटसेट और प्राइवेट वर्किंगसेटसेट को समझने में क्या अंतर है?

उत्तर

9

मैं यकीन है कि आप चाहते हैं कर रहा हूँ WMI पर्फ़ कक्षाएं Win32_PerfFormattedData_PerfProc_Process या Win32_PerfRawData_PerfProc_Process

जैसे उनके गुणों PercentProcessorTime और WorkingSet

ध्यान दें कि Perf वर्गों को समझने के लिए थोड़ा प्रयास करना।

  • प्रारूपित संस्करणों के साथ gotchas (स्क्रिप्टिंग लड़का देखें अरे,! लेख Why Does My Performance Monitoring Script Keep Returning the Same Incorrect Values?)
  • और कच्चे डाटा वर्गों "CounterType" सही गणित सूत्र में अनुवाद करने के देखभाल की आवश्यकता की गणना करने के उपयोग करने के लिए कर रहे हैं कच्चे डेटा के आधार पर मूल्य। शुरुआती स्थान के लिए How's My Driving? Monitoring Performance Using WMI देखें।

लेकिन उन WMI वर्गों आप सभी की जानकारी आप देख रहे हैं देना चाहिए।

+0

यह वही बनाता है जो मैं चाहता हूं! बहुत बहुत धन्यवाद – luc

2
+0

Thnaks देखो है। दुर्भाग्यवश, यह प्रश्न मेरे प्रश्न का उत्तर नहीं देता है। Win32_Process ऑब्जेक्ट के साथ उपलब्ध प्रक्रिया का सीपीयू उपयोग क्या है? – luc

+0

"WMI मेड इज़ी फॉर सी #" लिंक मृत दिखाई देता है। – damianb

+0

अब काम करता है - धन्यवाद। उम्मीद है कि यह दूसरों के लिए अपने स्वयं के गुगल में उपयोगी साबित होगा।:) – damianb

0

Win32_Process भी UserModeTime और KernelModeTime जो CPU उपयोग

गणना करने के लिए इस्तेमाल किया जा सकता इसके अलावा अपने जवाब के लिए कम से http://technet.microsoft.com/en-us/library/ee176718.aspx

संबंधित मुद्दे