使用超时sys.stdin评估输入

时间:2019-01-15 06:04:57

标签: python input timeout timed

**在这段代码中,我接受了用户的输入,时间限制为5秒。**

i, o, e = select.select([sys.stdin], [], [], 5)
if (i):
    print("Typed :" + sys.stdin.readline().strip())
else:
    print("5 seconds passed !")

我想知道如何评估输入并采取相应的行动

i, o, e = select.select([sys.stdin], [], [], 5)
if (i):
    if(sys.stdin.readline().strip() == "exit"):
        #Dosomeaction
    else:
        print("Typed :" + sys.stdin.readline().strip())
else:
    print("5 seconds passed !")

更多帮助(可选!!!)

我正在尝试创建一个可以与消息传递应用程序进行比较的应用程序:

read():从文本文件中读取消息

takeInput():从用户处获取输入并将其存储在文本文件中

我是python的新手,所以我想刷新消息(多次调用 read()函数),同时从用户那里获取信息,例如Messenger应用程式。在Messenger应用中,输入功能与出现消息的部分分开(读取功能)。

我尝试在 read()的末尾调用 takeInput(),反之亦然,但这确实可行,但是存在缺陷。

由于我是在终端中运行脚本的,因此,如果我要输入需要花费5秒钟以上的时间才能在终端外壳上进行写操作,则会调用 read()函数,并且键入的消息将消失(由于我编写 read()函数的方式),但是当我按Enter键时,仍将被“存储”。直到再次调用 read()之前,整个输入(消失的旧内容加上刷新后的终端上写的其余内容)都已正确存储在文本文件中。

因此,理想的输入场景是人类键入内容所需的时间少于5秒。

问题:即使我确实输入了我不到5秒的信息。如果出于某种原因要修改它,则用户几乎没有时间来实际修改消息。而且,如果我将超时int增加到10秒或更多,那么这将导致刷新速度非常慢(每10秒调用 read()

问题很明显。有关如何解决此问题的任何想法?也许并行处理?或者,我们可以分隔 read() TakeInput()函数(因此我们在 takeInput中不需要时间限制()函数,因为它将始终可用,并且 read()将处于不断循环中,以始终刷新消息)

0 个答案:

没有答案