python 3.7计划将运行睡眠状态更改为否定值

时间:2018-10-16 11:24:25

标签: python scheduler

修订后的问题

有没有一种方法可以通过使用踩踏和计划创建一个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()

1 个答案:

答案 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并删除两个重复项之一,可以轻松删除多余的数据