我有一个程序(temptrack),我需要每隔 x 分钟下载一次天气数据,持续 x 小时。我已经知道如何使用 每隔 x 分钟下载一次time.sleep(x*60)
,但我不知道如何在一定时间内重复此过程。
更新:感谢所有发布解决方案的人。我使用“datetime.datetime.now() + datetime.timedelta(hours=x)”将示例标记为最佳答案,因为我可以最好地理解它,而且它似乎非常适合我的目的。
计算你想停止做你正在做的事情的时间,并检查每次时间限制是否过期。像这样:
finish_time = datetime.datetime.now() + datetime.timedelta(hours=6)
while datetime.datetime.now() < finish_time:
do_something()
sleep_for_a_bit()
我刚刚在 Python 标准库中找到了sched 。
您正在寻找调度程序。
检查这个线程。
可能有点矫枉过正,但对于运行后台任务,特别是如果您需要 GUI,我建议使用QSystemTrayIcon和QTimer检查 PyQt 路由
也许我误解了你,但只是把它放在一个运行足够次数的循环中。例如,要每 5 分钟下载 2 小时,您需要下载 24 次,所以:
for i in range(24):
download()
sleep(5*60)
如果你需要它是可参数化的,它只是:
from __future__ import division
from math import ceil
betweenDLs = 5 # minutes
totalTime = 2*60 # minutes
for i in range(int(ceil(totalTime/betweenDLs))):
download()
sleep(betweenDLs*60)