我正在尝试完成一种方法来产生一个等待用户输入的线程;如果在 10 秒内没有输入任何输入,我希望脚本终止生成的线程并继续处理。如果输入了文本,我有办法从线程中取回输入,但我无法让超时杀死新生成的线程。
在下面的例子中是我最接近的。我告诉新创建的线程它是一个守护进程,它会在主脚本退出时退出。我遇到的问题是线程将继续等待,直到脚本退出或用户输入了某些内容。
shared_var = ['1']
def run(ref):
ref[0] = raw_input("enter something: ")
print "shared var changed to '%s'" % (ref[0])
thread = threading.Thread(target=run, args=(shared_var,))
thread.daemon = True
thread.start()
time.sleep(10) # simplified timeout
#Need some way to stop thread if no input has been entered
print "shared var = " + shared_var[0]
我知道突然杀死一个线程不是最好的方法(相关链接),但我不知道如何中断等待 raw_input 的新线程