在Linux中使用Python获得系统正常运行时间的最快方法

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (377)

我正在寻找一种从Python脚本中读取系统正常运行时间的快速轻量级方法。有没有办法sysinfo从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
提问于
用户回答回答于

添加最新答案。 这可能不是最快的方式。 但这应该是psutil.boot_time()的替代品,因为我在最新版本的linux psutil lib中找不到boot_time。

Dependancy:

pip3 install uptime

用法:

>>> from uptime import uptime
>>> uptime()
49170.129999999997

更多信息

用户回答回答于

您可以尝试安装psutil

pip install psutil

然后使用以下代码片段:

import psutil
import time


def seconds_elapsed():
    return time.time() - psutil.boot_time()


print seconds_elapsed()

扫码关注云+社区

领取腾讯云代金券