如何在Python中重复x分钟的操作?
我有一个程序(temptrack),我需要每x分钟下载x天数据的天气数据。我已经想出了如何使用time.sleep(x*60)
每隔x分钟下载一次,但我不知道如何在一定的时间内重复此过程。如何在Python中重复x分钟的操作?
更新: 谢谢大家谁发布的解决方案。 我用“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()
也许我误解了你,只是把它放在一个运行足够多次的循环中。例如,2小时,你需要下载24次,每5分钟下载,所以:
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-17 21:45:18
谢谢。你的第一个例子效果很好。我只会使用“for i in range(totalTime/frequency)”,这应该很好。我知道它会轮到(因为我使用整数,而不是浮点),但它不一定非常准确。 – ErikT 2010-04-17 21:47:48
尽量避免使用range(),除非你需要一个真正的列表。如果你只需要运行一个使用xrange来代替。这将优化你的代码,因为range()分配了一个完整的列表,而xrange()只是一个迭代器。注意:在python3中只有range()和行为像xrange() – Dacav 2010-04-17 22:22:29
这正是我所寻找的,即使我不知道它。非常感谢你。 – ErikT 2010-04-18 16:57:00