2013-05-01 4 views

risposta

30

È possibile utilizzare psutil.

Ad esempio, per ottenere l'elenco dei nomi di processo:

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

Per informazioni circa l'uso della CPU psutil.cpu_percent o psutil.cpu_times. Per informazioni sull'uso della memoria, utilizzare psutil.virtual_memory.

Si noti che psutil funziona con Linux, OS X, Windows, Solaris e FreeBSD e con Python 2.4 tramite 3.3.

+0

è possibile ottenere statistiche di rete ** per processo **? Ho cercato su Google e leggere i documenti per circa un'ora, non ho trovato nulla – chester89

+0

@ chester89 Questo non è correlato a questa domanda. Prova a cercare SO per le domande su psutil sull'utilizzo della rete, dopodiché, se non hai trovato una risposta soddisfacente, per favore vai avanti e fai una nuova domanda riguardo a questo. In ogni caso dovresti controllare ['Process.connections'] (https://pythonhosted.org/psutil/#psutil.Process.connections). – Bakuriu

+0

Come sapere la larghezza di banda che sta utilizzando tramite questo modulo –

3

Mi piace usare wmic su Windows. Puoi eseguirlo dalla riga di comando, quindi puoi eseguirlo da Python.

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

Con wmic è possibile ottenere i processi, CPU e la memoria informazioni facilmente. Basta usare wmic cpu, wmic process e wmic memphysical. Puoi anche filtrare determinati attributi usando wmic <alias> get <attribute>. E puoi ottenere un elenco di tutti i comandi con wmic /?. Spero possa aiutare!

è possibile controllare la documentazione ufficiale per WMIC qui: http://technet.microsoft.com/en-us/library/bb742610.aspx

+0

Grazie, sarebbe grandioso, ma dovrà essere eseguito come amministratore, c'è un modo per eseguirlo come amministratore prima di usarlo nella riga di comando? – Daniel

1

Questo codice Python 3.3 funziona per Windows 7 con UAC fino in fondo.

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")