Суть такова, в програме на curses работает цикл который читает раз в секунду с файлов данные и выводит на экран, в цикле организован выход по кнопке q которая прерывает цикл и выходит из цикла и программы. Но есть задержка выхода при нажатии на кнопку, что очевидно. Как можно оформить выход из такой программы без задержки? Пробовал код выхода оформить в отдельную функцию и запустить цикл с выводом данных и выходом паралельно тредами, но чтот так и не получилось убрать задержку. Что посоветуете в этом случае? Вот примерный код программы:
import time
import curses
myscreen = curses.initscr()
### прячем курсор
curses.curs_set(0)
### используем дефолтные цвета кoнсоли (прозрачность и тп)
curses.start_color()
curses.use_default_colors()
curses.init_pair(1,-1,-1)
### задаем цвет для строки с мАч
curses.init_pair(2,curses.COLOR_GREEN,-1)
curses.init_pair(3,curses.COLOR_RED,-1)
myscreen.border(0)
myscreen.addstr(0,1,'| program |')
height, width = myscreen.getmaxyx()
......
while True:
### тут читаем файлы и выводим на экран данные
with open(path+'status') as f:
status = f.read()
myscreen.addstr(...)
......
###тут выход
curses.noecho() ### для голой консоли, не выводит в конце строки нажимаемые символы
myscreen.addstr(start_y + 11, start_x_exit - 4, exit)
myscreen.nodelay(True) ### убирает задержку getch чтобы он не ожидал введения символа.
if myscreen.getch() == 113: ### 113 это ord('q')
break
myscreen.refresh()
time.sleep(1)
myscreen.clear()
myscreen.refresh()
curses.endwin()