修订后的问题
有没有一种方法可以通过使用踩踏和计划创建一个for循环,在该循环中,只要您需要,就可以精确地每秒一次在三个踩踏之间连续不断地运行脚本,就像
for thread01 in schead:
run at 00:00:01.0000
else(thread02):
run at 00:00:02.0000
else(thread03):
run at 00:00:03.0000
并且让它不断循环确实减少了漂移和睡眠值,因为每次代码在胎面上运行时,它都需要在下一秒之前执行1000毫秒
我已经测试过,session_create会在480到530毫秒之间持续运行
旧问题旧代码有助于缓解时间漂移
from main import session_create
import sched, datetime, threading
def timestamp():
next_call = time.time()
while True:
session_create()
print (datetime.datetime.now())
nextcall = next_call+1;
time.sleep(nextcall - time.time())
timerThread = threading.Thread(target=timestamp)
timerThread.daemon = True
timerThread.start()
答案 0 :(得分:0)
这是我所能获得的最接近的信息,因为我知道每秒需要调用并运行一次代码,并且我知道它需要500到600毫秒才能运行。
我使用threading.Timer每900毫秒运行一次代码,这导致代码至少每秒运行一次,并且绕过了我所经历的时间漂移。
from Sessions import session
import sched, time, threading
Event_scheduler = sched.scheduler(time.time, time.sleep)
##
start_time = time.time()
def run():
threading.Timer(0.9, run).start()
session()
run()
这是简单的数学问题,每N秒钟生病,代码运行两次(例如23:59:01:0050,然后在23:59:01:0950再次运行)。但是,通过找到重复项23:59:01 == 23:59:01并删除两个重复项之一,可以轻松删除多余的数据