Поскольку я не нашел лучшего способа читать нажатия клавиш в командной строке, я в настоящее время использую getch()
.
К сожалению, использование getch()
как это останавливает вывод на stdout
:
while True:
handle_keystroke(getch())
Нажатие кнопок запускает handle_keystroke()
и stdout
печатается в терминале - строка за строкой для каждого нажатия клавиши.
Предоставленные рекомендации здесь не помогло.
Что я делаю не так?
Кстати: мне не нужно для использования getch()
. Есть ли лучший способ (например, с использованием select()
)?
Обновление: (изменил название)
Все это становится проблемой только при использовании более чем одна нить. Похоже, что getch
(которая не является Python функцией) не освобождает GIL, поэтому все другие потоки приостанавливаются, поэтому затрагивается не только stdout
.