如何在特定时间运行我的代码? [复制]

Posted

技术标签:

【中文标题】如何在特定时间运行我的代码? [复制]【英文标题】:How can I run my code at a specific time? [duplicate] 【发布时间】:2021-10-12 11:52:49 【问题描述】:

我正在用 python 开发一个软件。我希望我的代码在特定时间运行。它将每 5 分钟运行一次,不会中断。但我希望它在特定的时间和分钟内准确地工作。比如20:00、20:05、20:10...

我使用了 time.sleep(300) 但是如果例如在我的程序运行后 5 秒过去了,它在每次运行中开始延迟 5 秒,例如它在 12 次运行后开始延迟 1 分钟运行。例如,它应该在 20:05 开始工作,但它从 20:06 开始。

我怎样才能提供这个?

【问题讨论】:

假设程序除了在运行之间休眠之外什么都不做,最简单的方法可能是使用 CRON 作业在指定时间运行程序,而不是休眠程序。 cron 是您应该考虑的正确方式。 【参考方案1】:

你可以使用调度模块

import schedule
import time
from datetime import datetime

now = datetime.now()

def omghi():
    print("omg hi there xD")


schedule.every(5).minutes.do(omghi)


while True:
    schedule.run_pending()
    time.sleep(1)

【讨论】:

提醒一下,要使用 schedule 你首先需要使用 pip 安装它【参考方案2】:

对于这种情况有一个有用的模型。 它是一个外部模型,你必须使用 pip 下载它,它被称为 schedule https://pypi.org/project/schedule/ - 在这里你可以看到所有的细节。

【讨论】:

【参考方案3】:

我相信使用定时线程最能满足您的需求。 This excellent answer 使用库中的 threading.Timer threading 如下:

import threading

def printit():
  threading.Timer(5.0, printit).start()
  print "Hello, World!"

printit()

【讨论】:

【参考方案4】:

非常感谢您的回答。但这就是我的处理方式,我想和你分享:)

import time
from datetime import datetime

while True:
    now = datetime.now()

    if (now.minute % 5) == 0 and now.second == 0:
        print("Fire!")

    time.sleep(1)

【讨论】:

以上是关于如何在特定时间运行我的代码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Access 应用程序中每周的特定时间之间运行我的 VBA 代码

在 python2.7 中运行我的代码时出现错误如何修复该错误? [复制]

如何运行具有特定持续时间的函数? [复制]

如何从 iPhone 中后台进程的名称访问(复制/修改)特定的 appfile 目录?

如何检查我的 Java 程序是不是在虚拟机中运行? [复制]

如何在每天的特定时间发送本地通知,即使那个时间已经过去?