python 毫秒问题,代码不知道为什么不能执行?


#测试毫秒
import datetime
now=datetime.datetime.now()
print(now,type(now))
#将其转化为字符串
times='2021-10-09 13:47:20.177715'
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
print(now,type(now))
while True:
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
    if now == '2021-10-09 13:51:20.177715':
        print('执行')
        break

为什么不能执行,这里面的if 的条件判断不能成立 ,但是明明都是字符串啊??当时间到达设置的时间点时,不能打印print函数的内容,原因未知,请说明为什么,怎么改

你的时间精度已经限制到微秒级别,程序两次获取时间的间隔可能已经超过一微妙,就是说你所指定的时间戳可能会被datetime.datetime.now()跳过,如果想让程序在指定时间运行,建议使用秒级别的判定
参考

当程序执行到if判断的这个点时,因为时间精确到了177715毫秒,当前判断的的时间未必等值于你设定的时间,简单来说就是太快了,时间和时间对不上,你可以去掉毫秒,验证下分钟试试。