PythonでWhileなどのループを手元のキー入力で抜けたいときにどうすればいいんでしょう?
opencv使ってた身としてはwaitKey(0)的な挙動を期待したいのですが…
考えうる手法群
プログラムを走らせながらなんらかのキー入力をノンブロッキングで取得するには
- マルチスレッド化する http://yoshifumi.hateblo.jp/entry/20080530/p1
- termiosを用いる https://qiita.com/tortuepin/items/9ede6ca603ddc74f91ba
などが考えられます。
でもコマンド操作でBreakするだけならCtrl+Cをキャッチすれば良さそうです。
Ctrl+Cをキャッチ
Ctrl+CはKeyboardInterruptという例外としてキャッチできるようです。
上の記事によるならば以下のtry構文でCtrl+C後の処理などについてきちんと書けば良いでしょう。
try:
while True: # なんらかの重い処理 (for だったり while だったり。。。)
pass # ここに、Ctrl-C で止めたい処理を書く
except KeyboardInterrupt:
# Ctrl-C を捕まえた!
# print('interrupted!')
# なにか特別な後片付けが必要ならここに書く
sys.exit(0)