我需要调用一个函数,正好是08:00, 18:00, 22:00
小时。我创建了一个例子来测试小时之间的比较。当当前时间到达其中一个时间。放在While循环中,认为这个例子可以作为秒表使用,但我认为我错了。如何比较这些价值观是最好的方法?在
currentH= dt.datetime.now().strftime("%H:%M:%S")
h = "16:15:10"
while True:
if(currentH==h):
print 'Ok'
print 'The current Hour is: '+h
Tags:
您的代码最大的问题是,您永远不会在循环内再次调用
now()
,因此您只是在将初始时间与16:15:10
进行比较而永远旋转。在当我们在做的时候:为什么要把时间转换成字符串进行比较,而不是仅仅比较时间?在
但这种设计有更大的问题,不容易解决。在
如果你在16:15查看时间,然后睡觉,然后在16:25醒来,会发生什么?那么
now()
永远不会返回16:15:10。在另外,你真的想消耗100%的CPU 10小时吗?在
更好的解决方案是编写
sleep_until
函数:(如果使用的是Python2.7或3.4,则会更复杂一些,因为如果有信号,
sleep
将提前唤醒。但要处理这种情况,只需在整个过程中添加一个while True:
循环。)现在,唯一棘手的一点是计算出你第一次需要睡觉的时间,这并不复杂:
^{pr2}$现在,我们只需循环等待,直到下一次:
或者,当然,您可以从PyPI获取许多调度库中的一个。在
或者只需使用平台的cron/launchd/Scheduled Tasks API来运行脚本。在
相关问题 更多 >
编程相关推荐