メインループで他のことを処理しながら、スレッドを使用してストリーム (/dev/tty1) から文字列を読み取ります。CTRL-C を押したときにスレッドがメイン プログラムと一緒に終了するようにします。
from threading import Thread
class myReader(Thread):
def run(self):
with open('/dev/tty1', encoding='ascii') as myStream:
for myString in myStream:
print(myString)
def quit(self):
pass # stop reading, close stream, terminate the thread
myReader = Reader()
myReader.start()
while(True):
try:
pass # do lots of stuff
KeyboardInterrupt:
myReader.quit()
raise
通常の解決策 (run() ループ内のブール変数) は、ここでは機能しません。これに対処するための推奨される方法は何ですか?
Daemon フラグを設定することはできますが、後で (何らかのクリーンアップを行うために) 価値があると判明する可能性がある quit() メソッドを使用することはできません。何か案は?