当前位置:首页 > 人工智能

一日一技:如何实现带Timeout的Input?

我们知道,日技在Python里面,何实可以使用input获取用户的现带输入。例如:

但有一个问题,日技如果你什么都不输入,何实程序会永远卡在这里。现带有没有什么办法,日技可以给input设置超时时间呢?何实如果用户在一定时间内不输入,就自动使用默认值。高防服务器现带

要实现这个需求,日技在Linux/macOS系统下面,何实我们可以使用selectors。现带这是日技Python自带的模块,不需要额外安装。何实对应的现带代码如下:

import sys

import selectors

def timeout_input(msg, default=, timeout=5):

sys.stdout.write(msg)

sys.stdout.flush()

sel = selectors.DefaultSelector()

sel.register(sys.stdin, selectors.EVENT_READ)

events = sel.select(timeout)

if events:

key, _ = events[0]

return key.fileobj.readline().rstrip()

else:

sys.stdout.write(\n)

return default

运行效果如下图所示:

selectors[1]这个模块,亿华云计算可以使用系统层级的select,实现IO多路复用。

这段代码来自inputimeout[2]。上面除了Linux/macOS版本外,还有Windows版本。大家有兴趣可以看一下。

参考资料

[1] selectors: https://docs.python.org/3.8/library/selectors.html

[2] inputimeout: https://github.com/johejo/inputimeout/blob/master/inputimeout/inputimeout.py

分享到:

滇ICP备2023006006号-16