from signal import SIGALRM, alarm, signal
class Alarm(Exception):
pass
def alarm_handler(*args):
raise Alarm
def raw_input_alarm(prompt='', timeout=None):
if timeout is None: # no timeout
return raw_input(prompt)
# set signal handler
signal(SIGALRM, alarm_handler)
alarm(timeout) # produce SIGALRM in `timeout` seconds
try:
return raw_input(prompt)
except Alarm:
return '' # timeout happened
finally:
alarm(0) # cancel alarm
这基本上是一个线程问题。我建议使用Twisted管理网络连接。它可以异步工作,让你能够拿起按键。在
找到了,用选择。选择我可以这样做:
我希望它能帮助别人!在
在Unix上读取用户输入而不阻塞(时间过长)的另一种方法是使用警报:
示例
^{pr2}$alarm
需要整数秒数。如果您想要更小的超时时间,请参见^{相关问题 更多 >
编程相关推荐