2013-05-01 90 views
14

我想獲取所有進程名稱,CPU,內存使用情況和峯值內存使用情況的列表。我希望我可以使用ctypes。但我很高興聽到其他選擇。謝謝你的時間。Python - 在窗口中獲取進程名稱,CPU,內存使用情況和峯值內存使用情況

+1

你不能做任何比[psutil]更好(http://code.google.com/p/psutil/) – JBernardo 2013-05-01 21:30:27

+0

在windows你最好的選擇很可能是性能計數器。 – ren 2014-10-01 08:17:35

回答

30

您可以使用psutil

例如,獲取進程名稱的列表:

process_names = [proc.name() for proc in psutil.process_iter()] 

有關CPU使用psutil.cpu_percentpsutil.cpu_times信息。 有關內存使用情況的信息,請使用psutil.virtual_memory

請注意,psutil適用於Linux,OS X,Windows,Solaris和FreeBSD以及Python 2.4到3.3。

+0

可以得到網絡統計**每個進程**?我google搜索了大約一個小時的文檔,還沒有找到任何東西 – chester89 2016-12-19 15:12:32

+0

@ chester89這與這個問題無關。請嘗試搜索關於網絡使用的問題,然後,如果您還沒有找到令人滿意的答案,請繼續問一個關於它的新問題。無論如何,您應該檢查['Process.connections'] (https://pythonhosted.org/psutil/#psutil.Process.connections)。 – Bakuriu 2016-12-19 16:26:59

+0

如何通過這個模塊知道它使用的帶寬 – 2017-08-25 11:13:10

3

我喜歡在Windows上使用wmic。你可以從命令行運行它,所以你可以從Python運行它。

from subprocess import Popen,PIPE 
proc = Popen('wmic cpu',stdout=PIPE, stderr=PIPE) 
print str(proc.communicate()) 

使用wmic您可以輕鬆獲得進程,cpu和內存信息。只需使用wmic cpu,wmic processwmic memphysical即可。您還可以使用wmic <alias> get <attribute>過濾掉某些屬性。您可以通過wmic /?獲得所有命令的列表。希望有所幫助!

您可以在這裏WMIC檢查出的官方文檔:http://technet.microsoft.com/en-us/library/bb742610.aspx

+0

謝謝,這將是偉大的,但它需要以管理員身份運行,有沒有一種方法可以在命令行中使用它作爲管理員運行它? – Daniel 2013-05-01 21:45:35

1

這個Python 3.3代碼適用於Windows 7,UAC一直向下。

import psutil 
import time 

def processcheck(seekitem): 
    plist = psutil.get_process_list() 
    str1=" ".join(str(x) for x in plist) 
    if seekitem in str1: 
     print ("Requested process is running") 

processcheck("System")