我试图在一秒钟的精度内比较两次,但是我发现有些时候代码计算不同,我的比较不起作用,循环无限执行。我把我的代码粘贴在下面,以供参考
start_time = datetimenow() #datetimenow is a function which returns time w/o microseconds
end_time = start_time + timedelta(seconds = GrabDuration)
while datetimenow() != end_time: #this part fails sometimes and passes sometimes
time.sleep(Grabtime)
saveas(imggrab())
如果你有任何其他更好的方式来比较时间和持续时间,我会很感激,如果你可以分享。 GrabDuration&Grabtime是用户给定的持续时间变量。在
我假设
datetimenow
返回一个标准的datetime.datetime
对象,所以基本上是这样的:将}进行比较会有点棘手,因为它们不相等需要一点时间。在
datetime
对象与==
或{作为测试,只需在Python REPL中尝试这些行(假设上面的行也已输入,因此
^{pr2}$datetimenow()
函数可以调用:在多次尝试中很有可能,你会得到一些
False
的结果。在我建议使用更安全的比较运算符比较
datetime
对象,如下所示:如果您比较了开始时间和结束时间,那么只有在开始时间不等于结束时间时,代码的这个while循环才会执行无限次
然而,您共享的代码,在while循环中,您再次使用当前系统时间,而不是使用strat_time变量进行比较。请检查一下。在
你也可以使用日期时间。日期时间。现在().time()方法也喜欢日期时间。日期时间。现在().time()<;日期时间.time(小时=2,分钟=10,秒=10)。这可以帮助你解决你的顾虑。在
相关问题 更多 >
编程相关推荐