2009-08-18 11 views
10

Czy istnieje sposób na uzyskanie statusu systemu w python, na przykład ilość wolnej pamięci, procesy, które są uruchomione, obciążenie procesora i tak dalej. Wiem na linuksie, że mogę to uzyskać z katalogu/proc, ale chciałbym to zrobić również w systemach UNIX i Windows.Uzyskiwanie statusu systemu w pythonie

+2

Duplikat z tych pytań: http://stackoverflow.com/questions/276052/how-to-get-current-cpu-and-ram-usage- w-python http://stackoverflow.com/questions/466684/how-can-i-return-system-information-in-python/467291 –

Odpowiedz

8

ja nie znam takiej biblioteki/opakowanie który obecnie obsługuje zarówno system Linux, jak i Windows. Jest libstatgrab, który nie wydaje się być bardzo aktywnie rozwijany (obsługuje już przyzwoitą różnorodność platform uniksowych) i bardzo aktywny PSI (Python System Information), który działa w systemach AIX, Linux, SunOS i Darwin. Oba projekty mają na celu wsparcie Windows w przyszłości. Powodzenia.

7

nie sądzę jest wieloplatformowa biblioteka do tego jeszcze (tam na pewno powinno być jednym chociaż)

Mogę jednak zapewnić Państwu jednym fragmencie użyłem, aby uzyskać bieżące obciążenie procesora z /proc/stat pod Linux:

Edit: otrzymuje straszne kodu nieudokumentowane z nieco bardziej pythonic i udokumentowanego kodu

import time 

INTERVAL = 0.1 

def getTimeList(): 
    """ 
    Fetches a list of time units the cpu has spent in various modes 
    Detailed explanation at http://www.linuxhowtos.org/System/procstat.htm 
    """ 
    cpuStats = file("/proc/stat", "r").readline() 
    columns = cpuStats.replace("cpu", "").split(" ") 
    return map(int, filter(None, columns)) 

def deltaTime(interval): 
    """ 
    Returns the difference of the cpu statistics returned by getTimeList 
    that occurred in the given time delta 
    """ 
    timeList1 = getTimeList() 
    time.sleep(interval) 
    timeList2 = getTimeList() 
    return [(t2-t1) for t1, t2 in zip(timeList1, timeList2)] 

def getCpuLoad(): 
    """ 
    Returns the cpu load as a value from the interval [0.0, 1.0] 
    """ 
    dt = list(deltaTime(INTERVAL)) 
    idle_time = float(dt[3]) 
    total_time = sum(dt) 
    load = 1-(idle_time/total_time) 
    return load 


while True: 
    print "CPU usage=%.2f%%" % (getCpuLoad()*100.0) 
    time.sleep(0.1) 
+5

[os.getloadavg()] (http://docs.python.org /library/os.html#os.getloadavg) –

Powiązane problemy