Я выполняю функцию с определенной скоростью (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