我有问题。我想每15分钟在09:00安排一次功能。并在11:00完成执行。
def function1():
print("Hello")
您有什么想法吗?
答案 0 :(得分:1)
如果您使用的是Unix计算机,则可以编写一个cronjob以每15分钟(或您希望的任何时间表)运行一个Python文件。该文件应包含并调用所需的任何函数。
在外壳中使用crontab
或crontab -e
打开crontab。
然后您可以添加,例如:
*/15 09-10 * * * python3 /path/to/my/file.py
哪个会从9:00开始每15分钟运行一次,最后一次运行将在10:45开始。如果您想在当天的最后一次跑步中以11:00跑步,则必须在crontab中添加另一行,例如:
0 11 * * * python3 /path/to/my/file.py
答案 1 :(得分:1)
答案 2 :(得分:1)
有两种可能的方法:
1)您可以使用操作系统的调度系统在适当的时间运行脚本。在Windows上,这称为任务计划程序。在Linux上,这称为cron。有关使用cron的详细信息,请参见Henry Woody的答复。
2)您可以编写代码来准确计算代码运行之前需要等待的时间。然后,您运行您的代码,然后重复。有关更多详细信息,请参见这篇文章:Python - Start a Function at Given Time
根据您的描述,第一个选项将是最简单的,并且似乎是最合适的,但是两种方法都有合适的用例。
答案 3 :(得分:1)
您可以使用简单的cron作业来安排您的作业,也可以尝试尝试编排框架,例如Airflow-http://airflow.incubator.apache.org/
Airflow是一个以编程方式编写,安排和监视的平台 工作流程。
答案 4 :(得分:1)
如果您想在没有外部库或工具(例如cron)的纯Python中执行此操作,则可以执行类似的操作,在该操作中,您将计算出执行操作之前的时间,并休眠该时间。
>如果运行此命令,则该进程将永远运行,每天睡眠至9:00,此时它将运行function1()并等待下一个季度,直到11:00。
请注意,如果function1()运行超过15分钟,则将跳过该季度的执行并等待下一个执行。另外,如果您从9:00开始,它将在第二天的第一次执行之前等待。
from datetime import datetime,timedelta
def wait_for_nine():
now = datetime.now()
if now.hour < 9:
wait_for = datetime.replace( now, hour=9, minute=0, second=0)
else:
wait_for = datetime.replace( now + timedelta(days=1), hour=9, minute=0, second=0)
delta = wait_for - datetime.now()
time.sleep(delta.seconds)
def wait_fifteen():
now = datetime.now()
next_quarter = 15 * (int(now.minutes / 15) + 1)
wait_for = datetime.replace(now, minute=next_quarter % 60, second=0) + timedelta(hours= int(next_quarter / 60))
delta = wait_for - dt.datetime.now()
time.sleep(delta.seconds)
while True:
wait_for_nine()
now = datetime.now()
eleven = datetime.replace(now, hour=11,minute=0, second= 0 )
while now <= eleven:
function1()
wait_fifteen()