我正在尋找一個快速,輕量級的方式從一個Python腳本讀取系統正常運行時間。有沒有辦法從Python調用sysinfo
Linux系統調用?最快的方式獲得系統正常運行時間在Python在Linux中
到目前爲止,我已經找到了另外兩種方法測量的正常運行時間,一個涉及運行的外部進程,另一個涉及/proc
讀取文件。
import subprocess
def uptime1():
raw = subprocess.check_output('uptime').decode("utf8").replace(',', '')
days = int(raw.split()[2])
if 'min' in raw:
hours = 0
minutes = int(raw[4])
else:
hours, minutes = map(int,raw.split()[4].split(':'))
totalsecs = ((days * 24 + hours) * 60 + minutes) * 60
return totalsecs
def uptime2():
with open('/proc/uptime', 'r') as f:
uptime_seconds = float(f.readline().split()[0])
return uptime_seconds
當比較速度,第二種方法是圍繞快50倍。儘管如此,直接調用系統調用應該是另一個更好的數量級。
>> import timeit
>> print(timeit.timeit('ut.uptime1()', setup="import uptimecalls as ut", number=1000))
1.7286969429987948
>> print(timeit.timeit('ut.uptime2()', setup="import uptimecalls as ut", number=1000))
0.03355383600865025
文件'/ proc中/'不是文件......他們最終都迷上了一些其他的東西讓你設置/獲取不同的東西。如果你願意,你可以在python中加載'.so'文件。但不是0.03s/1000倍足夠快? – HuStmpHrrr