Мдаа… Интересный проект. Похоже не хватает быстродействия цикла передачи данных от клавиатуры.
Надо залоггировать действия в файл и посмотреть где тормозит. press release move(те http get) и посмотреть сколько команды вместе требуют времени и влезают ли они в цикл генерации событий от клавы.
Что неясно:
Что такое format
Как устроен чам робот, что с той стороны. Каков код, аппаратура.
Что можно сделать:
Очевидно форматирование строк в цикле рального времени не гуд.
def on_press(self, key):
#k = format(key) - Убираем формтирование
# if k == 'Key.up' and self.u == 0:
# Проверка строк это нехорошо сравнивать коды. Сначала проверять то что быстрее проверяется self.u == 0
if self.u == 0 and k == code_up:
self.move(10, 0)
self.u = 1
# if k == 'Key.down' and self.d == 0:
# зачем все 4 варианта проверять?
elif k == code_dn and self.d == 0:
self.move(-10, 0)
self.d = 1
Очевидно плохо сделан релиз.
def on_release(self, key):
if key == keyboard.Key.esc:
return False
else:
self.move(0, 0)
self.u = 0
self.d = 0
self.l = 0
self.r = 0
Судя по архитектуре вы вообще зря используете треды. У вас их 4 - основной поток, два ваших и еще один который запустил puinput. По уму вам надо зарегистрировать обработчики событий клавиатуры и в основном потоке показывать видео.
Начните с того что упростите код. Там слишком много лишнего. А потом надо таймировать.