什麼是使用curses模塊快速退出Python程序的無限循環的最佳方式?Python Curses:快速退出程序
我已經嘗試添加在循環的結束加上此NODELAY()方法:
if screen.getch() == ord('q'):
break
然而,它需要2-3秒,使在環的一個迭代的所有函數調用。而且由於應用程序的原因,每5秒更頻繁地運行一次循環是沒有意義的。這意味着,爲了讓我退出該計劃的工作方式,我有時必須按住'q'2-8秒。
我的代碼如下所示:
import curses
import time
def main(screen):
refresh_rate = 5
screen.nodelay(1)
# Infinite loop. Displays information and updates it
# every (refresh_rate) # of seconds
while True:
# Makes several http requests
# and passes responses through multiple functions
# Escape infinite loop
if screen.getch() == ord('q'):
break
# Wait before going through the loop again
time.sleep(refresh_rate)
if __name__ == "__main__":
curses.wrapper(main)
我其他的解決辦法是更換,而真正有:
loop = 1
while loop:
#Loop code
if screen.getch() == ord('q'):
loop = -1
這樣一來,就沒有必要按住「Q」退出該程序。但按'q'一次後仍然可能需要8秒才能退出。
由於顯而易見的原因,這似乎不是退出程序的最佳方式。我很確定應該有更好的(更快的)解決方案。
除此之外,程序工作正常。這是兩行300多行的文件,所以我只是用我的嘗試解決方案發布代碼的相關部分。
這正是我所期待的!必須將循環放在一個單獨的函數中才能工作,因爲顯然,從getch/napms循環中斷不會從主循環中斷開。所以我用'return'替換getch/napms循環中的'break'。謝謝。 –