time.sleep()比while循环和if语句更有效吗



背景

我每'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

最新更新