私はPythonスクリプトからシステムの稼働時間を読み込むための、高速で軽量な方法を探しています。 Pythonからsysinfo
Linuxシステムコールを呼び出す方法はありますか?PythonでLinuxのシステム稼働時間を得る最速の方法
これまでは、稼働時間を測定するための2つの方法、つまり外部プロセスを実行する方法と/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
速度を比較すると、2番目の方法は約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
ファイル...彼らは最終的にあなたが得る/異なるものを設定することができますいくつかの他のものにフックアップされています。あなたが望むなら、 '.so'ファイルをPythonで読み込むことができます。 0.03秒/ 1000倍速くはありませんか? – HuStmpHrrr