我创建了一个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的时间时间,以便及时完成这些操作),然后将递增的值写入两个单独的文件中,并继续这样做直到系统关闭。 (此循环的每一次迭代都表示已过去了1分钟)
之所以选择sleep()
而不是通过其他方式来节省时间/存储时间,是因为它能很好地应对电涌情况,因为每分钟写入的运行时间都会增加。
我知道,time.sleep()
函数并不是一种精确的函数,它涉及到在微妙的时间内(以毫秒或微秒为单位)暂停时间。但是由于在我的代码中时间被暂停了大约一分钟,所以我相信睡眠功能的偏差/不准确不会很大。
我已经对上述脚本进行了大约2个月的测试,结果非常令人满意。
所以我想知道这是存储正常运行时间的有效方法,还是存在一种更好的方法来存储正常运行时间。
答案 0 :(得分:1)
您可以尝试使用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
注释: