Выполнение блока кода с определенной скоростью, где скорость должна меняться в зависимости от нажатия клавиши - PullRequest
0 голосов
/ 28 сентября 2018

Я выполняю функцию с определенной скоростью (50000 в секунду), используя do_every (), найденную в одном из ответов (ссылка ниже).Тем не менее, мне нужно добавить функциональность, чтобы иметь возможность изменять период на основе нажатия клавиши.Хотя мне удается добиться этого с помощью непрерывной проверки mscvrt.khbit (), это значительно снижает производительность функции.

Код:

def do_every(period,f,*args):
 def g_tick():
    t = time.time()
    count = 0
    while True:
        #this continuous if check is degrading performance 
        if msvcrt.kbhit():
            #change period value here based on the key pressed


        count += 1
        yield max(t + count*period - time.time(),0)

time.sleep(period)

g = g_tick()
while True:
    time.sleep(g.next())
    f(*args)

Есть ли другиеподход, при котором производительность не будет скомпрометирована?Повторная инициализация внутреннего g_tick () каждый раз и использование period в качестве глобальной переменной может помочь, но моя главная задача - производительность функции.

Ссылка на ответ, из которого был выбран do_every (): Выполнение периодических действий в Python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...