我想在一分钟的第一秒开始运行一个函数,但我不能这样做 这是我的代码
import datetime
now = datetime.datetime.now()
while not (now.second == "01"):now = datetime.datetime.now()
答案 0 :(得分:2)
您的代码无效,因为您正在将数字(now.second
)与字符串"01"
进行比较。在Python中,数字和它们的字符串表示不相等(与其他一些编程语言不同),所以这将无法工作。
尝试与1
(或者0
进行比较,如果你真的想要最好的那一分钟)。也许不是繁忙循环(在等待时将使用CPU的所有核心),而应该使用time.sleep
等到下一分钟开始。
import datetime
import time
now = datetime.datetime.now()
sec = now.second
if sec != 0:
time.sleep(60-sec)
# it should be (close to) the top of the minute here!
在处理计算机上的时间时总会出现一些不可预测性,因为您的程序可能会在任何时候被操作系统延迟(如果您的CPU非常忙,则更有可能)。我不会太担心它,可能它非常接近正确的时间。
答案 1 :(得分:1)
import time
while True:
if time.strftime("%S") == "01":
#Run Your Code
time.sleep(59)
答案 2 :(得分:1)
这会让你的系统像疯了似的,给它一点喘息的空间:
import time
while True:
current_seconds = time.gmtime().tm_sec
if current_seconds == 1:
print("The first second of a minute...")
time.sleep(0.9) # wait at least 900ms before checking again
您可以通过计算再次开始检查之前等待的时间来进一步简化它 - 如果您只对第一秒感兴趣,则可以安全地睡到分钟结束。