5

我有一个程序(temptrack),我需要每隔 x 分钟下载一次天气数据,持续 x 小时。我已经知道如何使用 每隔 x 分钟下载一次time.sleep(x*60),但我不知道如何在一定时间内重复此过程。

更新:感谢所有发布解决方案的人。我使用“datetime.datetime.now() + datetime.timedelta(hours=x)”将示例标记为最佳答案,因为我可以最好地理解它,而且它似乎非常适合我的目的。

4

5 回答 5

5

计算你想停止做你正在做的事情的时间,并检查每次时间限制是否过期。像这样:

finish_time = datetime.datetime.now() + datetime.timedelta(hours=6)
while datetime.datetime.now() < finish_time:
    do_something()
    sleep_for_a_bit()
于 2010-04-18T10:38:13.813 回答
4

我刚刚在 Python 标准库中找到了sched 。

于 2010-04-18T10:02:22.570 回答
3

您正在寻找调度程序。

检查这个线程

于 2010-04-17T21:37:58.683 回答
0

可能有点矫枉过正,但对于运行后台任务,特别是如果您需要 GUI,我建议使用QSystemTrayIconQTimer检查 PyQt 路由

于 2010-04-17T22:20:12.110 回答
-2

也许我误解了你,但只是把它放在一个运行足够次数的循环中。例如,要每 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)
于 2010-04-17T21:37:26.967 回答