2017-09-19 53 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超時並且沒有輸入時,會出現一些循環迭代,這是正常的。

對於我來說,我得到:

999742 iterations with no input 
258 iterations with input 

這似乎是合理的11秒。我的鍵盤在11秒內不可能重複100萬次密鑰,如果這樣做,就不可能在任何情況下使用鍵盤,除非在這個程序中碰到所有的鍵盤,因爲它必須每秒鐘計數~99 000個鍵,這會讓打字非常痛苦。所以,總之,你的數字是正常的。