如何在Python中重复x分钟?
我有一个程序(TestRack),我需要在x小时内每x分钟下载一次天气数据。我已经知道如何使用如何在Python中重复x分钟?,python,time,repeat,Python,Time,Repeat,我有一个程序(TestRack),我需要在x小时内每x分钟下载一次天气数据。我已经知道如何使用time.sleep(x*60)每隔x分钟下载一次,但我不知道如何在一定时间内重复这个过程 更新: 感谢所有发布解决方案的人。 我用“datetime.datetime.now()+datetime.timedelta(hours=x)”作为最好的答案标记了这个示例,因为我能最好地理解它,而且它似乎对我的目的非常有用。也许我误解了你,但只需将它放在一个循环中运行足够的次数即可。例如,要在2小时内每5分钟
time.sleep(x*60)
每隔x分钟下载一次,但我不知道如何在一定时间内重复这个过程
更新:
感谢所有发布解决方案的人。
我用“datetime.datetime.now()+datetime.timedelta(hours=x)”作为最好的答案标记了这个示例,因为我能最好地理解它,而且它似乎对我的目的非常有用。也许我误解了你,但只需将它放在一个循环中运行足够的次数即可。例如,要在2小时内每5分钟下载一次,您需要下载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)
您正在寻找一个调度程序
检查。可能有点过火,但是对于运行后台任务,尤其是如果您需要GUI,我建议您使用和检查PyQt路由。我刚刚在Python标准库中找到。计算您想要停止做任何事情的时间,并在每次时间限制未过期时检查。像这样:
finish_time = datetime.datetime.now() + datetime.timedelta(hours=6)
while datetime.datetime.now() < finish_time:
do_something()
sleep_for_a_bit()
finish\u time=datetime.datetime.now()+datetime.timedelta(小时=6)
while datetime.datetime.now()
这是一个简单的解决方案,但如果执行函数的时间与执行之间的时间大小相似,则可能不是我们想要的。谢谢。您的第一个示例运行良好。我将只使用“for I in range(totalTime/frequency)”,这应该可以很好地工作。我知道它会四舍五入(因为我使用的是整数,而不是浮点),但它不一定要非常精确。除非你需要一个真正的列表,否则尽量避免使用range()。如果您只需要运行一个用于xrange的。这将优化代码,因为range()分配整个列表,而xrange()只是一个迭代器。注意:在python3中只有range(),其行为类似于xrange(),我会使用select()来实现这一点:pUPDATE:nevermind,使用“for I in range(totalTime/frequency)”似乎效果不太好(这意味着使用它太不准确)。谢谢,我将签出xrange()和select()。这正是我要找的,尽管我不知道。非常感谢你。