use*_*648 5 python sync timer clock
我希望在datetime.utcnow().second零时每分钟执行一次循环.到目前为止,我有这个
while True:
while datetime.utcnow().second != 0: pass
do_something()
Run Code Online (Sandbox Code Playgroud)
但问题是我浪费了cpu进程.我会使用time.sleep(60),但我不知道它将如何与UTC时钟同步,因为time.sleep(60)可能会随着时间的推移偏离官方UTC时间.
nne*_*neo 11
我能想到的最佳方式是睡到下一分钟:
while True:
sleeptime = 60 - datetime.utcnow().second
time.sleep(sleeptime)
...
Run Code Online (Sandbox Code Playgroud)
如果你想要非常精确:
while True:
t = datetime.utcnow()
sleeptime = 60 - (t.second + t.microsecond/1000000.0)
time.sleep(sleeptime)
...
Run Code Online (Sandbox Code Playgroud)
这精确到达下一分钟所需的时间,精确到亚秒级.
编辑修复分钟翻转错误.