我正试图每分钟运行一个方法。
该方法在互联网上进行了一些操作,因此可能需要1秒钟到30秒的时间。
我想做的是计算此方法花费的时间,然后在剩余时间中休眠,以确保该方法本身每分钟运行一次。
当前我的代码如下:
def do_operation():
access_db()
sleep(60)
如您所见,这并没有考虑到任何延迟,尽管它可以工作,但有时会失败并完全跳过一分钟,这是永远不会发生的。
答案 0 :(得分:1)
import time
def do_operation():
start = time.time()
access_db()
time.sleep(60-time.time()+start)
答案 1 :(得分:0)
此代码将允许您在定义的时间间隔内运行可调用对象:
import time
import random
def recurring(interval, callable):
i = 0
start = time.time()
while True:
i += 1
callable()
remaining_delay = max(start + (i * interval) - time.time(), 0)
time.sleep(remaining_delay)
def tick_delay():
print('tick start')
time.sleep(random.randrange(1, 4))
print('tick end')
recurring(5, tick_delay)