入力待ちのスレッドがありますが、入力がない場合はプログラムを終了する必要があります。どうすればプログラムを終了できますか?この例では、exitはキーボードのCtrl + Cキーでトリガーする必要がありますが、タイムアウトや他のイベントを経由してこの操作を行うこともできます。終了プログラムがsys.stdin.readlineに貼り付けられました
import threading
import signal
import sys
import time
shutdown = False
def shutdownHook(sigNum, currentStackFrame):
global shutdown
print('shutdown')
shutdown = True
def readInput():
print('readInput')
print(sys.stdin.readline())
print('done reading input')
if __name__ == '__main__':
signal.signal(signal.SIGINT, shutdownHook)
signal.signal(signal.SIGTERM, shutdownHook)
inputThread = threading.Thread(name='input', target=readInput)
inputThread.start()
print('started input')
while not shutdown:
time.sleep(1)
print('waiting ' + str(shutdown))
print('current thread' + str(threading.current_thread()))
print('end of program ' + str(shutdown))
sys.exit(0)
「入力を読み終えましたか? –
私はスレッド自体の問題だと思っていますが、もっと具体的に考えると –
'ctl + c'は" shutdown "、" waiting true "、" current thread ... "、" end of program True " – pstanton