2017-09-19 11 views
1

이 코드는 1 백만 번의 반복 (컴퓨터에서 약 몇 초 동안) 동안 실행되지만 버튼을 누르고 있으면 내가 누르고있는 반복이 크게 증가하지 않습니다.python curses nodelay getch 반응이 없습니다

import curses 


stdscr = curses.initscr() 
curses.cbreak() 
curses.noecho() 
stdscr.nodelay(1) 

num_iters_nochar = 0 
num_iters_char = 0 

for i in range(10**6): 
    if stdscr.getch() == -1: 
     num_iters_nochar += 1 
    else: 
     num_iters_char += 1 




curses.nocbreak() 
curses.echo() 
curses.endwin() 
print num_iters_nochar , 'iterations with no input' 
print num_iters_char , 'iterations with input' 

nodelay getch()가 버튼 누르기를 정확하게 캡처하지 않는 이유는 무엇입니까?

답변

0

nodelay은 문자 그대로 지연이 없으므로 키보드 반복률이 실제로 높지 않으면 getch이 시간 초과되고 입력이 없을 때 루프 반복이 정상적으로 발생합니다. 나를 위해

내가 얻을 : 11 초 동안 합리적인 것 같다

999742 iterations with no input 
258 iterations with input 

. 내 키보드가 11 초 만에 1 백만 번 키를 반복 할 수있는 방법은 없습니다. 키보드를 사용하면이 프로그램에서 모든 게이츠를 치는 것이 불가능합니다. 초당 ~99 000 건을 계산해야하므로, 타이핑이 정말 괴롭다. 즉, 귀하의 숫자는 정상입니다.