您好,我是 python 的新手,我正在尝试创建一个启动线程的程序,该线程将在五秒后中断输入 () 函数并打印消息“完成!”。
目前它只打印“完成!”给出输入后。即使在五秒钟过去后,用户也必须在消息“完成!”之前进行输入。被展示。如何让线程中断 input() 函数?
import time
import threading
def fiveSec():
time.sleep(5)
print('Done!')
def main():
t = threading.Thread(target = fiveSec)
t.daemond = True
t.start()
input('::>')
if __name__ == '__main__':
main()
(使用 Python 版本 3.4.2)
请您参考如下方法:
您不需要线程来执行此操作,而是使用信号:
import signal
def interrupted(signum, frame):
print "Timeout!"
signal.signal(signal.SIGALRM, interrupted)
signal.alarm(5)
try:
s = input("::>")
except:
print "You are interrupted."
signal.alarm(0)
您可以阅读有关信号模块的文档: https://docs.python.org/2/library/signal.html
