use*_*113 10 python raw-input keyboardinterrupt python-2.7
我正在尝试创建一个循环python函数,它执行任务并提示用户进行响应,如果用户在给定时间内没有响应,则序列将重复.
这是基于这个问题:如何设置raw_input的时间限制
任务由...表示some_function().超时是一个变量,以秒为单位.我有以下代码的两个问题:
无论用户是否提示,raw_input提示在指定的4秒时间后都不会超时.
当输入'q'的raw_input时(没有'',因为我知道键入的任何内容会自动输入为字符串),该函数不会退出循环.
`
import thread
import threading
from time import sleep
def raw_input_with_timeout():
prompt = "Hello is it me you're looking for?"
timeout = 4
astring = None
some_function()
timer = threading.Timer(timeout, thread.interrupt_main)
try:
timer.start()
astring = raw_input(prompt)
except KeyboardInterrupt:
pass
timer.cancel()
if astring.lower() != 'q':
raw_input_with_timeout()
else:
print "goodbye"
Run Code Online (Sandbox Code Playgroud)
`
我不认为有一种方法可以显示一段时间后将过期的提示,而不显示来自另一个线程的不同消息。
您可以在调用 raw_input 之前添加以下行:
thread.start_new_thread(interrupt_user,())
Run Code Online (Sandbox Code Playgroud)
interrupt_user您可以按如下方式定义该函数:
sleep(5)
print "\nTime up"
Run Code Online (Sandbox Code Playgroud)
在raw_input_with_time函数中,不要调用sleep。相反,保存调用 raw_input 之前的时间,并确定调用之后经过的时间是否超过 5 秒。另外,如果用户输入“q”,那么它不应该调用自身,因此循环将停止。
| 归档时间: |
|
| 查看次数: |
3779 次 |
| 最近记录: |