背景
我每'x'分钟查询一次数据&执行各种计算。
我想出了两种方法。我更喜欢第一个。原因是,如果我在需要"y"时间计算的代码之间添加更多的代码,它仍然会每"x"分钟运行一次。使用time.sleep,我需要计算剩余的"y"时间,以确保"x"更新始终一致。
While Loop One:
import datetime
from datetime import datetime, timedelta
import time
frequency = 10/60
first_start = True
target_time = datetime.now()
while(True):
if(target_time < datetime.now()):
if(first_start):
start_time = datetime.now()
first_start = False
else:
start_time = end_time
end_time = start_time + timedelta(minutes=frequency)
target_time = end_time + timedelta(minutes=frequency)
print("Start: ", start_time)
print("End: ", end_time)
print("Target: ", target_time)
或者我可以用以下内容交换while循环输出:
当循环二:
first_start = True
target_time = datetime.now()
while(True):
if(first_start):
start_time = datetime.now()
first_start = False
else:
start_time = end_time
end_time = start_time + timedelta(minutes=frequency)
target_time = end_time + timedelta(minutes=frequency)
print("Start: ", start_time)
print("End: ", end_time)
print("Target: ", target_time)
time.sleep(frequency*60)
time.sleep((不是在后台做一些非常类似的事情吗(同时循环检查在返回之前已经完成了"x"秒数(?
还是在做一些更有效率的事情?
这两个操作都是阻塞的。你可以通过使用crontab、芹菜节拍或apscheduler来获得同样的效果,而不会阻塞你的CPU