Перейти к содержимому
  • 0
Bumer_32

сигнал с задержками python

Вопрос

насколько я знаю тут сидят говно кодеры на пайтон знатаки пайтон так что думаю что спросить можно

 

я в цикле while получаю постоянный сигнал  и нужно выводить из него сигнал с задержкой (1 - 2 сек)

 

простой time.sleep не поможет ведь в итоге нужные команды суммируются (то есть если сигнал идёт условно 5 секунд выведется не 5 сообщений а столько сколько оно бы вывело и просто так но с паузой между сигналами)

 

у кого есть идеи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Решение достаточно очевидное.

 

В начале цикла запомнить текущее время в переменную, а в конце делать сон до времени которое мы запомнили плюс необходимая задержка в две секунды.

 

Хорошего решения под питон не смог найти, под C++ есть `std::this_thread::sleep_until`

 

Впрочем сама идея должна портироваться на питон относительно легко, на стековерфлоу и других сайтах можно найти любую подходящую имплементацию функции сна до промежутка времени.

 

Чугунный способ решения из коробки будет подсчетом занятого времени и его вычитания из необходимой задержки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, BadCoder сказал:

Решение достаточно очевидное.

 

В начале цикла запомнить текущее время в переменную, а в конце делать сон до времени которое мы запомнили плюс необходимая задержка в две секунды.

а по подробнее можно? 

потому что я ни-че-го не понял 

если делать сон до времени которое мы запомнили разве не будет просто выведен сигнал как наступит это время? (пройдёт 24 часа)

да и через что делать сон?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, Bumer_32 сказал:

простой time.sleep не поможет ведь в итоге нужные команды суммируются

А точно? Что за источник сигнала, кстати?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
30 минут назад, ProgramCrafter сказал:

А точно? Что за источник сигнала, кстати?

Точно (хз м.б это баг библиотеки но оно реально суммируется)

 

это сигнал с геймпада

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Bumer_32 сказал:

а по подробнее можно? 

потому что я ни-че-го не понял 

если делать сон до времени которое мы запомнили разве не будет просто выведен сигнал как наступит это время? (пройдёт 24 часа)

да и через что делать сон?

Я не знаю как подробнее объяснить, но, попробую:

вся суть в том чтобы посмотреть на текущее время (перед выполнением время-затратных функций) и прибавить к нему необходимую задержку. Этим мы получаем время когда нам необходимо дать ответ.

После выполнения время-затратных функций необходимо поспать ДО времени которое мы получили в начале цикла и всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Bumer_32 сказал:

если делать сон до времени которое мы запомнили разве не будет просто выведен сигнал как наступит это время? (пройдёт 24 часа)

Нет, не пройдет.

Я говорю про относительное время в секундах. В компьютерах и программировании время отсчитывается от некоторого реального времени, например unix'овое отсчитывается в секундах от 1 января 1970 года.

 

Мы смотрим на время относительное, допустим в начале цикла оно было, ну допустим 56 секунд, мы добавляем к ним нашу задержку в две секунды и получаем 58 секунд. Мы выполняем необходимые вещи и в конце начинаем спать до 58 секунд. Когда они наступают программа встаёт и отдает необходимые данные, независимо от того как долго выполнялись наши функции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я понял в чём была проблема -

при методе time.sleep библиотека pygame не сбрасывала переменную с сигналом и в итоге после окончания time.sleep сигнал еще был а значит оно немного сбрасывает цифру ниже и опять повторяет time.sleep пока переменная не станет меньше чем указано в if! и так всё повторялось вот так)

 

решение - нашёл код без использования pygame

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...