2017-09-19 3 views
1

このコードは100万回(マシンでは数秒間)実行されますが、私がボタンを押したままにしておくと、押さえた反復回数は大幅に増えません。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秒で100万回のキーを繰り返す方法はありません。もしそうなら、このプログラムではすべてのゲッチを打つことは不可能です。毎秒~99 000の鍵を数えなければならないので、それは本当に痛い入力をするだろう。つまり、あなたの数字は正常です。

関連する問題