Начинающий программист, начинающий электронщик.

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (5)

Лучшие ответы пользователя

Все ответы (1)
  • Как можно такое сделать?

    @Lord_Prizrak
    Программист, электронщик
    В основном цикле получаешь время, сравниваешь его с предыдущим значением, и если оно изменилось например на 60мс, то увеличиваешь переменную.

    time.sleep(60) - очень плохая идея. При высокой нагрузке будут лаги, потому как каждый момент цикла мы засыпаем на 60мс. Если у нас просчёт всего и отрисовка займёт 10мс, то одна итерация будет 10+60=70мс.
    Ещё нормально. Если обсчёт и отрисовка займёт 100мс, то 160мс будет заметно пользователю.
    Засыпать надо с умом. Определяешь сколько времени у тебя будет проходить одна итерация (я когда писал то взял время 30мс). Запоминаешь время начала итерации (т.е. в начале цикла), в конце цикла снова получаешь время. Вычисляешь разницу, и отнимаешь её от того время которое взял. Засыпаешь на это время:

    import time
    frame = 30 # время выполнения одного прохода (итерации) цикла
    update_data_time = 900 # Время за которое увеличивается переменная
    while True:
        start = time.clock()  # время начала выполнения
        что_то_делаем()
    
        if data_time<=0: # Пора обновлять переменную?
            data_time = update_data_time # сбрасывает флаг обновления
            data += 1  # увеличиваем переменную
        else:  # не пора
            data_time -= frame  # уменьшаем флаг обновления
    
        end = time.clock()  # время окончания выполнения
        delta = end-start  # вычисляем время выполнения фрейма
        time.sleep(frame-delta)  #спим


    Хотя это не самый лучший способ, просто наглядный. И скорее всего в библиотеки которую ты используешь для написания есть функционал и для того и для другого.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (4)