我有这段代码:
application/x-msexcel
如果程序输入while True:
i=input'enter #enter or character:'
if not i:
break
,则会中断该程序,但如果3秒后它们没有回答,我希望它立即中断。
我该怎么做?
答案 0 :(得分:1)
Python 3 Timed Input(@mediocrity:如果你喜欢这个结果,也许你可以投票给他答案,因为他必须努力回答这个问题并值得信任)这显示了你正在寻找的一个很好的例子。 / p>
我在这里复制了它:
import time
from threading import Thread
answer = None
def check():
time.sleep(3)
if answer != None:
return
print "Too Slow"
Thread(target = check).start()
answer = raw_input("Input something: ")
print(answer)
print ("done")
我认为这个答案和你的问题的细微差别你可以自己。
我希望有帮助
编辑:我发现Linux的一些非常酷的东西(我不知道它是否在Windows上运行):http://www.garyrobinson.net/2009/10/non-blocking-raw_input-for-python.html
我知道它还不是你需要的,但我仍然发布它,因为它可能会帮助别人。这就是加里罗宾逊写的:
2009年10月17日 Python的非阻塞Raw_input [编辑于2010年8月30日修复了函数名称中的拼写错误,并且通常会改进格式化]
我需要一种方法来允许raw_input()调用超时。如果它对任何人都有用,我写了这个解决方案,它可以在类Unix操作系统下运行。
import signal
class AlarmException(Exception):
pass
def alarmHandler(signum, frame):
raise AlarmException
def nonBlockingRawInput(prompt='', timeout=20):
signal.signal(signal.SIGALRM, alarmHandler)
signal.alarm(timeout)
try:
text = raw_input(prompt)
signal.alarm(0)
return text
except AlarmException:
print '\nPrompt timeout. Continuing...'
signal.signal(signal.SIGALRM, signal.SIG_IGN)
return ''
ans = None
ans = nonBlockingRawInput("Input Something: ", 3)
print ans