python 3.7 включил выполнение сна до отрицательного значения

1

Пересмотренный вопрос

Есть ли способ, используя прохождение и расписание для создания цикла for, где вы запускаете скрипт ровно через секунду, прыгая между 3 ступеньками постоянно до тех пор, пока вам это нужно. Like

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
    Вы не получаете ошибки с этой строкой file.close() ? Потому что структура with позаботится о его закрытии.
  • 1
    Нет нет Но спасибо, что сообщили мне об этом. Я вынимаю ненужные биты, когда узнаю о них.
Теги:
scheduler

1 ответ

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 и удаления одного из двух

Ещё вопросы

Сообщество Overcoder
Наверх
Меню