【发布时间】:2017-12-29 07:04:36
【问题描述】:
我有一个线程正在等待输入,但如果没有提供输入,我需要退出程序。我怎样才能退出程序?在这个例子中,退出应该由键盘 ctrl+c 触发,但是我也想在没有交互的情况下执行此操作,即通过超时或其他事件。
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)
【问题讨论】:
-
你能看到
done reading input吗? -
我认为是线程本身的问题,让我想更多
-
ctl+c显示“shutdown”、“waiting True”、“current thread...”、“end of program True”,但不退出。
标签: python python-3.x