Python中的计时方法

Python中的计时方法,python,Python,如何让python脚本的一部分(只有一个方法,整个脚本以24/7的速度运行)每天在一个设定的时间运行,确切地说是每20分钟运行一次?比如每小时12:20,12:40,13:00 我不能使用cron,我尝试了定期执行,但这并不像我想的那样准确。。。这取决于脚本的开始时间。您可以将调用此方法放入一个循环中,该循环将休眠一段时间 from time import sleep while True: sleep(1200) my_function() 并且偶尔触发一次,您可以使用dat

如何让python脚本的一部分(只有一个方法,整个脚本以24/7的速度运行)每天在一个设定的时间运行,确切地说是每20分钟运行一次?比如每小时12:20,12:40,13:00


我不能使用cron,我尝试了定期执行,但这并不像我想的那样准确。。。这取决于脚本的开始时间。

您可以将调用此方法放入一个循环中,该循环将休眠一段时间

from time import sleep
while True:
    sleep(1200)
    my_function()
并且偶尔触发一次,您可以使用datetime来比较当前时间戳并设置下一次执行

import datetime

function_executed = False
trigger_time = datetime.datetime.now()

def set_trigger_time():
    global function executed = False
    return datetime.datetime.now() + datetime.timedelta(minutes=20)

while True:
    if function_executed:
        triggertime = set_trigger_time()

    if datetime.datetime.now() == triggertime:
        function_executed = True
        my_function()

不过,我认为进行系统调用脚本将是一个更好的解决方案。

例如,使用redis进行调用和打包。您可以在特定时间安排任务。因此,您可以运行第一个脚本,保存到变量starting time,计算starting time+20分钟,如果您当前的脚本将结束,那么在结束时,您将以适当的时间推送另一个相同的任务。

模块可能对此有用。见答案
详细信息。

为什么不能使用cron?如果您
time.sleep(time\u to\u wake\u-the \u current\u time)
在定期过程中,脚本中的定期执行也可以正常工作。如果您想要准确,您不会打败cron.Short<代码>如果divmod(int(time.strftime('%M')),20)[1]==0:#做一些事情。但是需要一个标志
在相关的\u分钟
为非重复!第二种方法不起作用(每次迭代都会重置触发时间,总是提前20分钟,条件总是
False
)。即使逻辑是正确的,它也会忙着等待CPU死掉,因为它从不睡觉。它需要某种标志性的执行。它肯定会消耗CPU。