【发布时间】:2012-08-22 17:28:09
【问题描述】:
我正在尝试一种方法来生成一个等待用户输入的线程;如果在 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]
我知道突然终止线程不是最好的方法 (Related Link),但我不知道如何中断等待 raw_input 的新线程
【问题讨论】:
标签: python multithreading user-input