我创建了一个python脚本,记录了PC全天的正常运行时间,并在第二天将使用情况存储在数据库中。
while 1:
time.sleep(59.9)
# now some code that increments the up-time value by 1 minute
# my other code here
这是时间加法器功能的蓝图,它停止了59.9s的执行(我选择了59.9s而不是1分钟,因为递增的值需要写入2个单独的文件,所以我想给出大约100ms的时间顺序为了及时完成那些操作,然后将增加的值写入两个单独的文件,并继续这样做,直到系统关闭。 (此循环的每次迭代都表示已经过了一分钟)
之所以我选择sleep()
而不是其他方式来节省/存储时间,是因为它在电源浪涌的情况下相当好,因为增加的正常运行时间是每分钟写入的。
我知道time.sleep()
函数在一个微妙的持续时间(以毫秒或微秒)停止时间方面并不精确和准确。但是因为在我的代码中,时间停止了大约一分钟,所以我认为睡眠功能的偏差/不准确性不会很大。
我已经测试了上面的脚本大约2个月,结果非常有利。
所以我想知道它是否是一种存储正常运行时间的有效方式,或者存在更好的方法。
你可以尝试GetTickCount64功能。
例:
import ctypes
import datetime
def uptime_in_ms():
lib = ctypes.windll.kernel32
return lib.GetTickCount64()
def frmt(dt):
d = dt.days
_s = dt.seconds
h, rem = divmod(_s, 3600)
m, s = divmod(rem, 60)
return f'{d} day(s), {h:02}h:{m:02}m:{s:02}s'
if __name__ == '__main__':
ms = uptime_in_ms()
dt = datetime.timedelta(milliseconds=ms)
uptime = frmt(dt)
print(uptime)
测试:
C:\Users\User>python Desktop/get_uptime.py
1 day(s), 00h:18m:51s
笔记: