函数开始在分钟的第一秒运行

时间:2017-06-19 18:45:03

标签: python function time

我想在一分钟的第一秒开始运行一个函数,但我不能这样做 这是我的代码

    import datetime
now = datetime.datetime.now()
while not (now.second == "01"):now = datetime.datetime.now()

3 个答案:

答案 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

您可以通过计算再次开始检查之前等待的时间来进一步简化它 - 如果您只对第一秒感兴趣,则可以安全地睡到分钟结束。