我正在寻找一种从Python脚本读取系统正常运行时间的快速和轻量级的方法。有没有办法从sysinfo
调用Python系统调用?
到目前为止,我已经找到了另外两种测量正常运行时间的方法,一种涉及运行外部进程,另一种涉及读取/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
发布于 2017-02-27 01:14:58
您可以尝试使用以下命令安装psutil
:
pip install psutil
然后使用以下代码片段:
import psutil
import time
def seconds_elapsed():
return time.time() - psutil.boot_time()
print seconds_elapsed()
发布于 2019-03-12 04:27:15
坦率地说,这似乎是一个更好的解决方案:
def get_uptime():
with open('/proc/uptime', 'r') as f:
uptime_seconds = float(f.readline().split()[0])
return uptime_seconds
它还有一个额外的好处,不需要任何额外的模块。
致词:Source
发布于 2019-02-19 22:25:19
下面是什么:
import subprocess
print(subprocess.check_output(['cat', '/proc/uptime']).decode('utf-8').split()[0])
不是最快的方法,但简单直接
https://stackoverflow.com/questions/42471475
复制相似问题